2011-12-29 38 views
5

在ASP.Net Web Form應用程序中使用jQueryMobile是否正確?
在ASP.NET web窗體中使用jQueryMobile或其他Mobile JS庫有哪些優缺點?ASP.NET中的jQueryMobile WebForm

回答

11

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 Forms回發模型正常工作。例如用<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>控件,因爲那你肯定是在混合比喻。一般來說,不要過分依賴帖子。

取而代之,您可以在您的網頁上使用use web methods直接從JavaScript調用。具有[WebMethod]屬性的靜態頁面方法將返回JSON格式的數據,這非常適合當今大多數JavaScript框架。這些方法must be declared as static意味着它們不參與頁面的生命週期。這也意味着它們具有更好的性能特徵。

最後,即使當您使用Web窗體,你可以隨時使用.ashx的文件(基本IHttpHandler和它是異步的表妹,IHttpAsyncHandler)或Web服務與ScriptService屬性。如果您將來決定使用ASP.NET MVC,這些選項也可以很好地遷移。

+0

thanks..michielvoo。由於我必須使用ASP.NET Web表單,我正在考慮使用webmethods或使用異步處理程序,但如果可能的話,我想避免使用這種方法。 – Kai 2011-12-30 07:50:39

+1

如果你不介意問我,MVC如何爲JQuery Mobile提供更好的幫助?我看到很多人只是說「如果你使用.NET Web Forms切換到MVC」,但沒有提供任何理由。我正在使用Web Forms開發一個項目,並且在回發中遇到了一些問題,並試圖使用WebMethod或UpdatePanels路由,但對此感到疑惑。 – avivas 2012-03-06 20:21:01

1

我希望這不會變成一個ASP.NET WebForms抨擊派對。

答案是ASP.NET WebForms是好的,ASP.NET MVC也是如此。你今天在用什麼?你最舒服的是什麼?你有多少時間?項目截止日期是什麼?

是的,WebForm生成的控制ID有點煩人,但有解決辦法。是的,儘量遠離UpdatePanel,但沒有什麼能阻止你同時使用jQuery。 UpdatePanel歷來被濫用。期。它的ViewState hogger不適合移動應用程序。

在一天結束時,WebForms可以正常工作,擁有頁面生命週期,並且可以執行一些可靠的服務器端邏輯。在移動環境中,我傾向於遠離任何runat=server控制,因爲我想主要製作自己的Html並避免ViewState。另外,頁面級別的靜態[WebMethod, ScriptMethod]有助於組織您的代碼。

+0

注意:我們很久以前就拋棄了UpdatePanel以支持直接(並且更易於管理的jQuery ajax調用)。 – 2011-12-29 22:18:04

+0

我想在這裏解決的是jQuery手機,而不是jQuery。 – Kai 2011-12-30 07:07:49