【问题标题】:jQueryMobile in ASP.NET WebFormASP.NET WebForm 中的 jQueryMobile
【发布时间】:2012-01-29 14:05:12
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery asp.net jquery-mobile webforms


    【解决方案1】:

    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,你的所有视图状态仍然在客户端和服务器之间来回发送,即使是微小的更新,整个页面也是在服务器端处理的。

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


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


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

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

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

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

    【讨论】:

    • 谢谢..michielvoo。由于我必须使用 ASP.NET Web 表单,我正在考虑使用 webmethods 或使用异步处理程序,但如果可能的话,我想避免这种方法。
    • 如果您不介意我问,MVC 如何更适合 Jquery Mobile?我见过很多人只是简单地说“如果您使用 .NET Web 窗体切换到 MVC”,但没有提供任何理由。我正在开发一个使用 Web 表单的项目,并且在回发方面遇到了一些问题,并尝试使用 WebMethod 或 UpdatePanels 路由,但对此感到疑惑。
    【解决方案2】:

    我希望这不会变成 ASP.NET WebForms 抨击派对。

    答案是 ASP.NET WebForms 很好,ASP.NET MVC 也很好。你今天用什么?你最舒服的是什么?你有多少时间?项目截止日期是什么时候?

    是的,WebForm 生成的控件 ID 有点烦人,但有一些变通方法。是的,尽量远离UpdatePanel,但是没有什么能阻止你同时使用jQuery。 UpdatePanel 历来被滥用。时期。它是一个 ViewState hogger,不适合移动应用程序。

    最终,WebForms 可以正常工作,拥有页面生命周期,并且可以执行一些可靠的服务器端逻辑。在移动环境中,我倾向于远离任何 runat=server 控件,因为我想主要制作自己的 Html 并避免 ViewState。此外,页面级别的静态[WebMethod, ScriptMethod] 有助于组织您的代码。

    【讨论】:

    • 注意:我们很久以前就放弃了 UpdatePanel 以支持直接(以及更易于管理的 jQuery ajax 调用)。
    • 我想在这里解决的是 jQuery mobile,而不是 jQuery。
    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2011-06-09
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多