2011-01-21 2 views
1
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false" /> 
<asp:Button ID="Button1" runat="server" Text="Button" /> 

Я установил для свойства EnableViewState значение false, но когда я нажимаю на кнопку, значение в текстовом поле сохраняется после обратной передачи. Почему значение сохраняется?Как отключить viewstate для определенного элемента управления?

+0

Взгляните на http://stackoverflow.com/questions/5748354/asp-net-page-controls-and-viewstate/15129881#15129881 – Lijo

ответ

4

Посмотрите на Understanding ASP.NET View State. В жизненном цикле страницы есть этап загрузки Post Post, который заполняет ваши контрольные значения из данных формы.

View State может быть очень запутанным, а именно, зачем вам это нужно, если элементы управления заполнены данными формы на обратной стороне. The Role of View State по той же ссылке выше, делает достойную работу, объясняя, почему она полезна.

Подводя итоги: View State не требуется для ввода пользователем. Состояние просмотра используется для хранения программных изменений состояния страницы, которые происходят. Простым примером является нажатие кнопки без отправки, а обработчик изменяет текст метки. Это изменение должно храниться в состоянии просмотра, чтобы оно сохранялось во всех дополнительных сообщениях.

+0

Спасибо, Билл. Статья, о которой вы упомянули, определенно интересна. Я не знал об IPostbackdatainterface, и пример довольно объяснен. –

-1

Explanation

Самый простой способ установить каждый раз, когда Текста свойство String.Empty.

+1

Это очень плохая практика моего друга. –

+0

Почему вы так думаете? – zavaz

+0

Я спрашивал о том, как использовать viewstate !! –

0

Элементы управления, принимающие ввод, могут восстановить свое состояние, используя данные, отправленные на сервер. Они не должны храниться в ViewState. В некотором смысле это не старые значения, это НОВЫЕ значения, которые пользователь представил (несмотря на то, что он, возможно, не изменил их).

Смежные вопросы