Какие элементы управления поддерживает ViewState?

Я пытаюсь осмыслить инфраструктуру управления, чтобы понять, для каких из них ASP.NET поддерживает состояние просмотра.

Вот эти обычные элементы управления HTML, например: <input type="radio" checked="checked"/> -> Я понимаю, что у них нет состояния просмотра

Затем есть элементы управления HTML с runat = "server" <input type="radio" checked="checked" runat="server"/> -> Поддерживается ли состояние просмотра между обратными передачами?

Затем есть элементы управления ASP.NET <asp:TextBox id="txtMyText" runat="server"/> -> Я понимаю, что у них есть состояние просмотра

У нас есть несколько настраиваемых элементов управления, которые наследуют HtmlTextBox <myPrefix:myTextBox id="txtMyText" runat="server"/> -> Это то же самое, что и тип 2 выше?

Можно ли предположить, что любой элемент управления с тегом runat="server" будет поддерживать состояние просмотра?


person DotnetDude    schedule 03.03.2009    source источник


Ответы (4)


Существует 3 типа элементов управления: стандартные элементы HTML, такие как серверные элементы управления HTML, в которые добавлен тег runat = server, и полные веб-элементы управления. Состояние просмотра поддерживается только для веб-элементов управления.

person MikeW    schedule 03.03.2009

Когда у нас возникли проблемы с viewstate, я начал использовать вспомогательное программное обеспечение Viewstate от Binary Fortress http://www.binaryfortress.com/aspnet-viewstate-helper/

Это дает вам реальное представление о том, что происходит - а также помогает с проблемами производительности, связанными с viewstate, вы можете декодировать viewstate одним щелчком мыши и увидеть, что на самом деле там - так вы поймете, какие элементы управления используют viewstate, а какие нет. t, и что именно они там хранят.

Кроме того, еще никто не упомянул ControlState. Это появилось вместе с ASP.NET 2, и теория состоит в том, что важные вещи, необходимые для работы элемента управления, находятся в состоянии элемента управления, а данные и т. Д. В состоянии просмотра, поэтому вы можете отключить состояние просмотра и привязывайте данные к вашему элементу управления при каждой обратной передаче, и элемент управления по-прежнему в основном работает с использованием состояния управления. Я говорю «теория», потому что на практике реализация кажется неоднородной. Когда вы смотрите на код выпадающего списка, например, с помощью рефлектора, это не реализовано должным образом. Это могло измениться в более поздних версиях фреймворка, я не уверен. Много информации о состоянии управления там, если вы ее поищете, я просто подумал, что упомяну об этом.

person DannykPowell    schedule 12.03.2009

Ага, нет, элементы управления HTML не предназначены для поддержки чего-либо в состоянии просмотра, если вам это небезразлично, возьмите веб-элементы управления.

person Martin Moser    schedule 03.03.2009

Все, что вы помещаете в представление своей страницы и добавляете runat = "server", будет иметь состояние просмотра.

Что касается динамически добавляемых элементов управления, это зависит от того, когда и как вы добавляете элемент управления в дерево элементов управления. Ознакомьтесь с принятым ответом на этот вопрос, но также проверьте из мой вопрос здесь.

person Jon Smock    schedule 06.04.2009
comment
Это неверно. Как упоминалось @MikeW, только веб-элементы управления поддерживают состояние просмотра. ‹Input type = radio checked = checked runat = server /› это не будет поддерживать состояние просмотра, даже если у него есть runat = server - person Bolo; 13.11.2015