ASP.NET Web Forms是一个很好的框架,但您不需要将其大部分用于使用JavaScript UI框架的移动开发。我将首先列出缺点,然后是替代方案,最后在必须使用Web表单时给出一些提示,尽管有缺点。
ASP.NET Web窗体的问题在于您并不总是完全控制HTML。这可以减轻 使用控制适配器 ,避免使用 某些控制 ,并使用 的EnableViewState 控件和页面上的属性。 ASP.NET Web Forms 4.0还可以缓解一些问题 不可预知的客户ID 。但是,所有这些确实增加了额外的工作,只是为了解决ASP.NET Web窗体的本质。
此外,大多数Web控件都会 发出JavaScript 进入ASP.NET Web Forms后期模型的页面工作。例如用 <asp:DropDown AutoPostBack="true"> , <asp:TextBox OnTextChanged="..." > 要么 <asp:Panel DefaultButton="..."> 。如果您的开发风格主要是服务器端,并且您很高兴不必担心使其全部工作在客户端,那么这非常好。
<asp:DropDown AutoPostBack="true">
<asp:TextBox OnTextChanged="..." >
<asp:Panel DefaultButton="...">
该 <asp:UpdatePanel> 是另一个很好的例子:你将它添加到页面,你有神奇的AJAX启用页面。但它渲染了相当多的JavaScript,所有的视图状态仍然在客户端和服务器之间来回发送,即使是微小的更新,整个页面也会在服务器端处理。
<asp:UpdatePanel>
但对于移动开发,您希望针对较小的屏幕和快速加载时间优化页面。通常,移动JavaScript框架负责维护客户端的状态,异步发送和接收消息以及通过JavaScript更新视图。这意味着ASP.NET Web Forms中用于维护回发状态(视图状态,页面生命周期)的所有基础结构通常都是无用的,有时甚至会适得其反。
的 我认为整体ASP.NET MVC更适合移动开发,也适用于jQuery Mobile。 强>
如果你 的 必须 强> 使用ASP.NET Web窗体,然后使用像 <asp:ListView> 用于呈现您将用于jQuery Mobile UI列表元素的HTML。此控件使您可以很好地控制HTML。
<asp:ListView>
尽量不要使用 <asp:UpdatePanel> 控制,因为那时你肯定是混合隐喻。一般来说,不要过多依赖邮寄。
相反,你可以 使用网络方法 在您的页面上,您可以直接从JavaScript调用。静态页面方法用 [WebMethod] 属性将返回JSON格式的数据,这非常适合当今的大多数JavaScript框架。这些方法的事实 必须声明为静态 意味着他们不参与页面的生命周期。这也意味着它们具有更好的性能特征。
[WebMethod]
最后,即使您使用Web窗体,也可以始终使用.ashx文件(基本 IHttpHandler的 它是异步表兄弟, IHttpAsyncHandler )或与Web服务 ScriptService 属性。如果您决定将来使用ASP.NET MVC,这些选项也将很好地迁移。
我希望这不会变成ASP.NET WebForms抨击派对。
答案是ASP.NET WebForms都很好,ASP.NET MVC也是如此。你今天用的是什么?你最舒服的是什么?你有多少时间?项目截止日期是什么时候?
是的,WebForm生成的控件ID有点烦人,但有一些解决方法。是的,尽量远离 UpdatePanel ,但没有什么能阻止你同时使用jQuery。该 UpdatePanel 历来被滥用。期。它是一款ViewState hogger,不适合移动应用。
UpdatePanel
在一天结束时,WebForms将正常工作,拥有页面生命周期,并可以执行一些坚实的服务器端逻辑。在移动环境中,我倾向于远离任何一个 runat=server 控制,因为我想主要制作自己的Html并避免 ViewState 。另外,静态 [WebMethod, ScriptMethod] 在页面级别有助于组织您的代码。
runat=server
ViewState
[WebMethod, ScriptMethod]