2016-01-03 2 views
0

У меня есть страница с веб-форму asp.net возле 40 управления и 50 серверов валидатора на нем и I`m с помощью UpdatePanel с триггером asyncpostback на нем, как показано ниже:почему asyncpostback в странице WebForm 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> 

мой вопрос: почему мои данные обратной почты async настолько тяжелы? i've проверяет данные, отправленные обратно на сервер, и это около 1200 КБ, в каждом asyncpostback.

+1

Я полагаю, это из-за 'ViewState', который отправляется по каждому запросу AJAX. –

+0

Я подозревал, что, как я могу проверить точный размер viewstat? –

+0

Вы можете посмотреть полезную нагрузку, отправленную во время запроса AJAX. ViewState отправляется как скрытое поле ввода. –

ответ

3

UpdatePanel был простым, но тяжелым подходом к AJAX, когда большинство разработчиков ASP.NET не были подготовлены к AJAX вообще.

Вместо обмена данными JSON/XML с серверной стороны, он отправляется под воздействием некоторого действия HTML в замещающем ContentTemplate. Он также меняет ViewState.

Поскольку мы в 2016 году, я бы сказал, что вы должны начать думать об изучении простого AJAX или использовать стороннюю инфраструктуру, такую ​​как jQuery (по крайней мере) для выполнения вызовов AJAX, которые работают с данными, чтобы использовать хорошее разделение проблемы оптимизации ваших клиент-серверных коммуникаций.

Его MSDN article гласит:

управления ASP.NET UpdatePanel позволяют создавать богатые, клиент-ориентированных веб-приложений. Используя элементы управления UpdatePanel, вы можете обновить выбранные части страницы, а не обновлять всю страницу с помощью обратной передачи . Это называется выполнением частичного обновления страницы. веб-страницы ASP.NET, которая содержит элемент управления ScriptManager и один или несколько элементов управления UpdatePanel могут автоматически участвовать в частичной странице обновления без пользовательского клиента сценария

.

+0

'Так как мы в 2015 году' - еще :-)? –

+0

@ DarinDimitrov Omg, вы занимете мой ответ за это, не так ли? : ((((((Я собираюсь исправить это; P –

+0

Конечно, это неверно: -D +1 кстати для хорошего ответа. –

0

Спасибо, ребята, что вы пытаетесь ответить на мой вопрос. Но моя второстепенная проблема в том, что мне нужно изучить чистую ajax, . Моя первая проблема была в том, почему мои asyncpostback настолько тяжелы, и я удалил всю мою страницу, включая частичные поля, в одну панель обновления, и ответ: мне нужно отделить каждый частичное обновление в нескольких пакетах обновления.