移动ASP.NET技术

3
你在使用asp.net时,想了解如何在移动设备上使用它。你已经知道如何检测移动设备,但是在移动设备上展示网页方面却束手无策。
你考虑使用Multi-View来展示移动视图,但是除非我也这样做,否则它不能用于我们的masterpage,我宁愿让页面重定向到移动版本。
但我希望这是自动发生的,不想为每个页面添加代码。我已经使用了一个HttpModule,但它会导致网站中的每个对象都使用它,只想在aspx页面中使用它,所以我在主页顶部放了一个用户控件。
我还添加了一个名为mobile的文件夹,其中包含每个移动设备的文件夹,因此如果他们进入~/Account/Login.aspx,它将重定向到~/Account/Mobile/IPhone/Login.aspx,但我必须在移动设备中排除masterpage,否则它会陷入死循环 :)
我喜欢MVC的方式,即使用自定义ViewEngine进行重定向,但由于我的公司需要一些ASP.NET控件,我无法使用MVC。
有什么建议吗?

你们打算支持哪种手机呢?例如,一个可以在iPhone上运行的页面未必可以在Sony Ericsson K700上运行。另外请注意,人们可能会使用像Opera Mini之类的浏览器。Opera甚至可以在非常基本的移动设备上运行,并使用代理服务器,以便它经常可以以适当的方式重新格式化页面。 - James
计划同时为两者制作,我使用的想法可以适用于多种手机,因为我可以为每种类型的手机使用一个文件夹。 "~/Account/Mobile/BlackBerry/Login.aspx" 另一种我正在使用的技术是使用自定义文件扩展名和 HttpModule,而不是使用目录。如果我转到 Login.aspx 并且我是移动设备,它将转到 Login.mobile,但将页面呈现为 aspx 页面。不幸的是,这不支持多个手机。 - jaekie
1个回答

1

这非常取决于特定的网站以及促使您考虑拥有移动版网站的原因。您有多少内容不适合移动浏览器(例如Flash,AJAX)?您提到的这些自定义控件有多复杂?

个人认为最好尝试设计主要网站以兼容更近期的智能手机(例如iPhone,Android),因为它们变得非常流行并且越来越强大。这些手机通常具有基于WebKit的浏览器,因此在Chrome或Safari中进行测试至少可以给出页面的工作情况。

如果必要,您可以为桌面和移动设备使用略微不同的样式表。通过隐藏不重要的内容和简化导航,使页面更易访问。

ASP .NET实际上内置了一个复杂的设备过滤系统,因此您可以根据当前浏览器更改页面的某些部分,甚至是主页面。请参见此处:http://ryanfarley.com/blog/archive/2008/08/14/more-on-device-filtering-with-asp.net-server-control-properties.aspx。您只需要确保您的浏览器定义是最新的即可。

避免使用复杂的ASP .NET控件,如GridViews,因为您对HTML和CSS的控制较少。像ListView这样的控件更加灵活。

某些功能(如AJAX)在某些设备上可能会有一些错误,特别是如果您正在使用AJAX UpdatePanels。您可以使用模拟器来测试这些情况。或者您可以在移动设备上禁用这些功能。这是假设您甚至在使用它们。

为了适应低端设备,您可以拥有一个单独的移动站点并行运行。要创建移动页面,请从System.Web.UI.MobileControls.MobilePage继承而不是普通的Page类。W3Schools有一些有用的信息:http://www.w3schools.com/dotnetmobile/control_mobilepage.asp。请注意,移动Web表单现已过时,因此不被视为前进的方式。

如果您要并行运行两个或多个站点,并且两者都需要复杂的逻辑,则可以创建一个类库来保存共享功能。这将减少一些代码重复。

为了避免在重定向到移动版本时出现无限循环,只需检查当前URL是否包含移动站点的基本URL即可。最简单的方法可能是在主页面上进行重定向,但在每个页面上都有一个链接,当点击时可以转到移动版本。
总体而言,这是一个非常复杂的主题,因此建议考虑获取一本适当的书籍。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接