Пользовательские элементы управления ASP.NET — альтернативы PostBack?

StackOverflow https://stackoverflow.com/questions/75805

Вопрос

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

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

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

Я ищу:

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Я полагаю, вы могли бы использовать файлы cookie, но это было бы очень грязно.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top