在 ASP.NET 中创建一个适用于 Blackberry、Windows Mobile 和 iPhone 的迷你站点

Posted

技术标签:

【中文标题】在 ASP.NET 中创建一个适用于 Blackberry、Windows Mobile 和 iPhone 的迷你站点【英文标题】:Creating a mini-site in ASP.NET that works on Blackberry, Windows Mobile, and iPhone 【发布时间】:2010-09-08 17:37:50 【问题描述】:

我正在开发一个针对桌面浏览器的 ASP.NET 网站。我们希望启用一个可选的移动视图(例如http://m.sample.com),它将提供一些主要是文本的简单页面。不需要 AJAX 甚至 javascript,也不需要用户输入 - 它实际上只是带有几个链接的文本表格,用于在页面之间导航。

最好的设置方法是什么,以便它可以在 Blackberry、Windows Mobile 和 iPhone 上运行?

我应该关注ASP.NET Mobile 支持,还是只是滚动我自己的页面?

更新:这是针对 m.microsoftpdc.com 的。我们采用 /Mobile 子文件夹方法,并使用了Scott Hanselman's iPhone tips for viewport and other stuff。

【问题讨论】:

【参考方案1】:

根据个人经验,我知道您确实不需要为 iPhone 做太多事情。我通常宁愿用我的 iPhone 浏览您的常规网站。

只是我的两分钱。

【讨论】:

【参考方案2】:

基于用户代理的不同样式表将处理“漂亮”。您在使用母版页吗?您还可以使用设备过滤器根据设备设置不同的主设备。

【讨论】:

【参考方案3】:

我过去曾这样做过,我这样做的方式是通过为桌面创建目录和为移动设备创建目录来分离页面。这使您可以更好地分离视图,因为实际上它们有很大不同。在 ASP.NET Forms 中,我经常使用Model View Presenter 模式,因为它与 ASP.NET Forms 发挥最佳功能的方式相得益彰。这样我就可以在两个视图之间重用一些代码。然后在站点的 index.aspx 页面中,您只需解析请求的用户代理字符串以找出浏览器并相应地重定向。因此,例如一个拥有 iphone 的人来到您的网站,您解析 user-agent string 并确定它是一部 iphone。然后您重定向到指向 Mobile/Index.aspx 页面的 m.sample.com。否则,您将重定向到 Desktop/Index.aspx。

我在页面级别解析了用户代理字符串,当然你也可以在 HttpModule 或 HttpHandler 级别执行这种逻辑。

编辑

我只是推出了自己的网页,因为我们的目标不是支持 WML 的手机。在我看来,这将是使用 ASP.NET Mobile 支持的唯一原因,如果您还想支持支持 WML 的手机。

【讨论】:

【参考方案4】:

您只确定了 3 个手机“平台”作为您的目标。需要考虑的一件事是,那里有更多非黑莓/Windows Mobile/iPhone 手机,也许它们将成为您的大多数观众。 (?)

从您描述您的应用程序的方式(仅文本)来看,您应该可以使用几乎所有支持互联网的手机,这几乎是过去八年销售的所有手机。

滚动您自己可能会让您更好地控制内容的显示和导航方式,您的用户会喜欢这一点,但您将失去像 ASP.NET Mobile 这样的东西可能为您提供的大部分自动格式设置和高级交互功能.鉴于您预计您的用户社区在未来 2 年内将采用这种方式,您可能需要考虑这种权衡。

他们是否可能会要求在移动端提供更多桌面功能?如果它可能是“是”(当我想到您所针对的 3 个平台时更是如此),那么我会推荐一些自动格式化/启用工具,如 ASP.NET 移动。如果没有,请自行开发,让访问者使用起来简单易行。

【讨论】:

【参考方案5】:

在今年(2009 年)的 Mix 上宣布了 mdbf。请参阅this video 或this blog post by Scott Hanselman,了解如何根据需要使用它来识别和重定向移动浏览器。

【讨论】:

以上是关于在 ASP.NET 中创建一个适用于 Blackberry、Windows Mobile 和 iPhone 的迷你站点的主要内容,如果未能解决你的问题,请参考以下文章

如何在 FastReport中创建波斯历?

在 asp.net 中创建静态对象列表

如何在 asp.net 中创建分层结构

尝试在 asp.net 中创建 json Web 服务时出错

在 ASP.NET 样板的种子中创建存储过程

如何在 Web ASP.NET (.NET Framework) 中创建启动文件?