Как отключить состояние просмотра и другие скрытые поля в ASP.NET

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

(Я знаю, что потеряю некоторые функции, но я думаю, что лучше справиться с этим, чем удалить «runat=server». Единственное, о чем я беспокоюсь, это панель обновлений, которая мне действительно нужна)

(Вышеизложенное завершено, дополнительная информация здесь )


person Olav    schedule 20.03.2009    source источник


Ответы (3)


Насколько мне известно, вы не можете полностью избавиться от ViewState, то есть вы не можете избавиться от этого скрытого поля ввода, называемого __VIEWSTATE.

Элементы управления по-прежнему могут получать доступ к ControlState, когда ViewState отключен. ControlState на самом деле хранится в ViewState, поэтому он оказывается в скрытом поле __VIEWSTATE.

Таким образом, отключение ViewState для всей страницы только уменьшит это скрытое поле, но не избавит от него полностью.

Я считаю, что .NET также помещает туда небольшое количество своей собственной секретной информации, поэтому, если вы действительно взломаете его и переопределите способ отображения страницы, чтобы полностью избавиться от этого скрытого поля, вы, вероятно, обнаружите, что ваш сайт перестает работать.

person teedyay    schedule 20.03.2009

Вы также можете удалить тег «form» из aspx, но тогда обратная передача серверных элементов управления не будет работать. Я использовал это в загруженном Ajax popup.aspx и показывает ОК.

person drSkoda    schedule 06.02.2012

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

Вы можете отключить ViewState на уровне страницы, установив для атрибута EnableViewState директивы Page значение false.

<%@ Page enableViewState="false" %>

Кроме того, вы можете отключить ViewState для серверных элементов управления, установив для свойства EnableViewState соответствующего элемента управления значение false.

person Cerebrus    schedule 20.03.2009
comment
Насколько я знаю, некоторые серверные элементы управления игнорируют это и все равно используют ViewState. - person Jakob Christensen; 20.03.2009
comment
Да, кажется, я уже пробовал это, и это также другие __животные (животные подчеркивания :-) - person Olav; 20.03.2009
comment
@Jakob: Я думаю, ты совершенно прав. Как упоминает teedyay в своем ответе, вы не можете полностью отключить его без серьезного взлома. - person Cerebrus; 20.03.2009