JQuery-Mobile和ASP.Net - AJAX还是Postback?

Kag*_*awa 9 asp.net jquery-mobile

我过去一直在开发ASP.Net,直到最近才遇到移动项目.Jquery-Mobile似乎是一个完美的框架,所以我只是潜入它.

目前我正在使用ASP.Net方法将服务器控件放在页面上,然后使用jqm来增强这些控件,使它们看起来像移动设备.我实际上做回发来收集表单数据并在代码隐藏中处理它们.为了避免整页刷新,我不得不将它们与updatepanel混合使用.不知何故,我让他们工作,但内心深处,我觉得这不是正确的方式(或有效的方式).

为了让它们正确混合起来有太多的复杂性,所以我想也许我应该避免回发并在纯AJAX请求中做其他事情?

$.ajax({
 type: 'POST',
  url: "/GetName",
  data: "{}",
  contentType: "application/json; charset=utf-8"

})
.success(function (response) {
  alert(response);
});
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

[WebMethod ()] 
public String GetName()
{ return "Jack"; }
Run Code Online (Sandbox Code Playgroud)

问题:

  • 这是有效的,但这是使用jQuery-Mobile网站的更好方法,还是这只是另一个糟糕的例子?

  • 对于这种情况,UpdatePanel和回发是一个坏主意吗?(我知道他们的工作)

  • 如果首选AJAX,我该如何在pageload上填充下拉列表(非服务器控件)?发送一个AJAX请求来填充$(document).ready()上的下拉列表对我来说似乎很愚蠢

我正在寻找的是开发移动网站的经验法则,我不想太远离应该做的事情.非常感谢您的投入.谢谢.

and*_*eer 13

asp.net Web Forms和jQuery Mobile真的不能一起工作.回发模型打破了jQuery Mobile ajax的工作方式,当你有多个页面或表单时,它会下降.特别是Web窗体需要一个<form>包装所有服务器端控件的标记,并且您不能引入其他"内部"窗体.jQuery Mobile最适合使用ajax模型和一个或多个"pages"(<div data-role="page">)以及DOM中包含的表单.更新面板最终会导致混乱.

一种方法是简单地关闭jQuery Mobile ajax加载.你可以这样做:

//note that the order of script loading here is critical.
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
    $(document).bind(“mobileinit”, function() {
        $.mobile.ajaxEnabled = false;
    });
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js">
</script>   
Run Code Online (Sandbox Code Playgroud)

但最终,你将没有一个高效的网站.如果您的站点在本地无线网络上运行,则可能已经足够了.

我主要在Web Forms环境中工作,需要基于Web Forms的jQuery Mobile应用程序,并将5个左右的"页面"编码为单个静态html文件.然后我依靠JavaScript和jQuery ajax加载到ASMX Web服务端点.我也广泛使用了KnockoutJS,但我当然可以完全依赖JavaScript和jQuery ajax来提取数据(在我的情况下,应用程序具有报告性质,没有数据更新.)如果要保存数据,可以使用同样的技术.

更好的方法是使用asp.net MVC,它消除了强制回发模型,并允许对<form>标记放置的位置进行细粒度控制.

我正在一个更大的移动网站上工作,并使用MVC作为后端并充分利用Razor视图,但最后,我依靠客户端ajax调用所有数据和KnockoutJS几乎所有动态标记.最后,我的客户端应用程序在Web窗体和MVC之间并没有什么不同.基于MVC的控制器更易于使用ajax端点,解决方案更清晰.

一般来说,我会将两种解决方案都归结为"单页面应用程序"即SPA方法.还有其他方法可能适用于Web窗体,但在我的有限探索中,这是最好的选择.

  • 这正是我处理这些情况的方式.将jQM与MVC一起使用,如果页面上有大量数据,则将其淘汰. (2认同)
  • 我认为您和您的公司面临的基本困境是,从根本上说,与为传统桌面构建Web应用程序相比,构建移动Web应用程序需要采用非常不同的方法.jQuery Mobile可以很好地帮助您完成大部分工作,并且在本机和跨平台Web之间肯定存在折衷.建立在Web窗体之上只会让所有这些变得更加困难.您可能还没准备好接受MVC,但Web表单可能无法让您到达目的地. (2认同)