2016-01-03 15 views
0

我有近40個控件和50個服務器驗證一個WebForm asp.net頁面上 並在其上使用的UpdatePanel與asyncpostback觸發像下面我真的:爲什麼asyncpostback在asp.net網頁表單頁面是如此沉重

<asp:UpdatePanel ID="pnlMain" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="rdblHeiatElmi" EventName="SelectedIndexChanged" /> 
     <asp:AsyncPostBackTrigger ControlID="txtCodeMeli" EventName="TextChanged" /> 
     <asp:AsyncPostBackTrigger ControlID="chbkDaneshkade" EventName="SelectedIndexChanged" /> 
     <asp:AsyncPostBackTrigger ControlID="drpProvince1" EventName="SelectedIndexChanged" /> 
     <asp:AsyncPostBackTrigger ControlID="drpProvince2" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    <ContentTemplate> 

我的問題是:爲什麼我的異步回發數據如此之重? 我已經檢查了發送回服務器的數據,它的每個asyncpostback都接近1200KB。

+1

我想這是因爲在每個AJAX請求上發送的ViewState。 –

+0

我懷疑那個,我如何檢查viewstat的確切大小? –

+0

您可以查看AJAX請求期間發送的有效負載。 ViewState作爲隱藏的輸入字段發送。 –

回答

3

UpdatePanel對於大多數ASP.NET開發人員根本沒有準備好AJAX的AJAX來說是一種簡單而沉重的方法。

與服務器端交換JSON/XML數據不同,它會通過ContentTemplate佔位符內的某個操作HTML進行發送。它也擴大了ViewState

因爲我們在2016年,我會說你應該開始考慮學習普通的AJAX,或者使用像jQuery這樣的第三方框架(至少)來執行AJAX調用,這些調用與數據一起工作,以充分利用關注優化您的客戶端 - 服務器通信。

MSDN article狀態:

ASP.NET UpdatePanel控件使您可以構建豐富的,以客戶爲中心 Web應用程序。通過使用UpdatePanel控件,您可以刷新 頁面的選定部分,而不是使用回發來刷新整個頁面。這被稱爲執行部分頁面更新。一個 ASP.NET Web頁包含ScriptManager控件和一個或多個 UpdatePanel控件可以自動參與局部頁 更新,而無需自定義客戶端腳本

+0

'因爲我們在2015年 - 仍然:-)? –

+0

@DarinDimitrov Omg,你會爲此降低我的答案,不是嗎? :(((((((我打算解決這個問題; P –

+0

當然,這是不正確的:-D +1順便說一個好的答案) –

0

謝謝你們試着回答我的問題。 但我的第二個問題是,我需要學習純阿賈克斯, 我的第一個問題是爲什麼我的asyncpostbacks如此沉重,我是把我的所有頁面包括部分字段放到一個更新面板中,答案是我需要分離每個在多個更新面板中進行部分更新。