javascript - ASP.NET WebForm 中的 jQueryMobile

标签 javascript jquery asp.net jquery-mobile webforms

在 ASP.NET Web Form 应用程序中使用 jQueryMobile 是正确的方法吗?
在 ASP.NET Web Form 中使用 jQueryMobile 或其他 Mobile JS 库的优缺点是什么?

最佳答案

ASP.NET Web Forms 是一个很好的框架,但对于使用 JavaScript UI 框架进行移动开发,您不需要其中的大部分内容。我将首先列出缺点,然后是替代方案,最后给出一些尽管有缺点但必须使用 Web 窗体的提示。


ASP.NET Web 窗体的问题在于您并不总是能够完全控制 HTML。这可以通过 using control adapters 来缓解, 通过避免使用 certain controls ,并通过使用 EnableViewState控件和页面上的属性。 ASP.NET Web Forms 4.0 还缓解了一些问题,例如 unpredictable client IDs .但所有这些加起来确实需要额外的工作才能解决 ASP.NET Web 窗体的性质。

此外,大多数 Web 控件将 emit JavaScript进入 ASP.NET Web 窗体回发模型的页面。例如 <asp:DropDown AutoPostBack="true"> , <asp:TextBox OnTextChanged="..." ><asp:Panel DefaultButton="..."> .如果您的开发风格主要是服务器端,并且您很高兴不必为使它在客户端全部工作的细节而烦恼,那么这真的很好。

<asp:UpdatePanel>是另一个很好的例子:您将它添加到页面,并且神奇地使该页面启用了 AJAX。但它呈现了大量的 JavaScript,您的所有 View 状态仍然在客户端和服务器之间来回发送,即使是微小的更新,整个页面也会在服务器端处理。

但对于移动开发,您希望针对更小的屏幕和更快的加载时间优化您的页面。通常,移动 JavaScript 框架负责在客户端维护状态、异步发送和接收消息以及通过 JavaScript 更新 View 。这意味着 ASP.NET Web 窗体中用于跨回传( View 状态、页面生命周期)维护状态的所有基础结构通常毫无用处,有时甚至适得其反。


我认为总体而言,ASP.NET MVC 更适合移动开发,也适合 jQuery Mobile。


如果您必须使用 ASP.NET Web 窗体,则使用像 <asp:ListView> 这样的控件用于呈现您将用于 jQuery Mobile UI 列表元素的 HTML。此控件使您可以很好地控制 HTML。

尽量不要使用<asp:UpdatePanel>控制,因为那样你肯定是在混合隐喻。一般来说,不要过分依赖回传。

相反,您可以 use web methods在您的页面上,您可以直接从 JavaScript 调用。 [WebMethod] 的静态页面方法属性将返回 JSON 格式的数据,这非常适合当今大多数 JavaScript 框架。这些方法的事实must be declared as static表示他们不参与页面的生命周期。这也意味着它们具有更好的性能特征。

最后,即使在使用 Web 表单时,您始终可以使用 .ashx 文件(基本 IHttpHandler 和它的异步表亲 IHttpAsyncHandler )或带有 ScriptService 的 Web 服务属性。如果您将来决定使用 ASP.NET MVC,这些选项也会很好地迁移。

关于javascript - ASP.NET WebForm 中的 jQueryMobile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663040/

相关文章:

javascript - 为什么我的正常同步代码线像异步一样工作?

javascript测试div中是否有文本

asp.net - 使用 DotNetOpenAuth 库时出现 PolicyException

asp.net - 在母版页中更改和保留 DIV 选定标记

c# - 无效操作异常 : Incorrect Content-Type: ASP. NET Core

javascript - 如何减少第一个字节的时间

javascript - 从前端向后端发送关系数据更新

javascript - jquery 自动完成输入字段没有任何反应

javascript - 光滑 slider 中心模式

jquery - 从一个 div 滚动到下一个时更改导航栏按钮的事件状态