Пользовательские элементы управления ASP.NET - альтернативы PostBack? - PullRequest
5 голосов
/ 16 сентября 2008

В своем путешествии вглубь разработки пользовательских элементов управления ASP.NET я, очевидно, разбираюсь в модели ASP.NET PostBack и в том, как она влияет на разработку элементов управления.

Я понимаю, что элементы управления не имеют "времени жизни" в ASP.NET и поэтому должны быть повторно инициализированы при каждой загрузке страницы. Мы преодолеваем это, сохраняя значения / параметры объектов в ViewState.

Поэтому многие статьи, которые я читаю, предлагают не использовать PostBack, поскольку это может привести к значительным накладным расходам на страницу. Я не ищу, как это отключить, я это знаю.

Я ищу:

Какие у нас есть альтернативы использованию модели PostBack для инициализации элементов управления?

Я знаю, что мы могли бы использовать QueryString, но это выглядит ужасно грязно и явно ненадежно.

В идеале вы могли бы дать мне обзор архитектуры / дизайна другого подхода и плюсов / минусов этого ..

Большое спасибо ^ _ ^

Ответы [ 5 ]

3 голосов
/ 16 сентября 2008

Ну, Session State - это решение на стороне сервера, с его собственной кучей ненужных вещей, с которыми нужно иметь дело, если вы хотите вообще избежать ViewState. На самом деле, использование ViewState в пользовательском элементе управления - это хорошо и хорошо - просто будьте разборчивы в том, что вы храните, - храните только дельты из объявленного состояния элемента управления, не храните ничего, что вы собираетесь получить при обратной передаче (например, из Вызов БД) и др.

1 голос
/ 25 октября 2008

Если вы действительно ищете альтернативы модели PostBack, я бы предложил исследовать ASP.NET MVC Framework. Я хотел бы выкинуть WebForms на обочину и сделать все мои вещи в MVC, но, увы, унаследованный код - это tarbaby, и переписывание почти никогда не дает ответа, поэтому я подключаюсь дальше ...

1 голос
/ 16 сентября 2008
  1. Сохранение состояния вашего объекта в контексте сеанса: это сместит бремя сохранения состояния с клиента на сервер, что может быть приемлемым для небольших приложений интрасети. Для сайтов в столичном Интернете это не сработает;

  2. AJAX-включить ваш контроль: в этом случае, только состояние изменения должны быть отправлены обратно. Выбор правильной структуры является ключевым здесь; см. http://www.asp.net/ajax/ajaxcontroltoolkit/samples/ для официального подхода MS; возможны многие другие.

1 голос
/ 16 сентября 2008

Вы должны где-то хранить значения, поэтому вы ограничены строкой запроса и скрытыми полями формы. Если вы связываете это с HTTP, то в основном это параметры GET или POST.

Полагаю, вы могли бы использовать куки, но это было бы очень грязно.

0 голосов
/ 16 сентября 2008

Я думаю, вы все еще неправильно понимаете элементы управления. Элементы управления имеют проблему, которую вы описываете, когда вы добавляете их на страницу динамически. Если вы объявите свои элементы управления заранее в aspx-коде, они будут построены вместе со страницей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...