2010-01-20 2 views
3

Мне нужно скрыть скрытые поля VIEWSTATE и EVENTVALIDATION на моей странице ASP.net во время RUN.Не удается скрыть скрытое поле VIEWSTATE в ASP.NET

мне удалось удалить EVENTVALIDATION как так .............

<%@ Page enableEventValidation="false" EnableViewState="false" %> 

Но VIEWSTATE все еще там, и я не могу избавиться от него, и мне нужно. (трудно объяснить, почему)

Есть ли другой способ избавиться от него?

Заранее благодарен!

+0

Не могли бы вы зашифровать viewstate? – Phil

ответ

3

Чтобы полностью удалить __VIEWSTATE, вам необходимо избавиться от тега <form runat="server">. Конечно, вы не сможете использовать элементы управления, требующие рендеринга в форме сервера.

+0

Ai damn, да, мне это нужно, поскольку я использую элементы управления ASP.NET. – Etienne

+0

@Etienne: Это расходы, которые вы платите за рамки состояния, которые вы получаете с помощью Web Forms. Кстати, вы можете использовать многие элементы управления ASP.NET вне формы на стороне сервера. Не все из них требуют этого. –

+0

@Ralph: некоторые люди называют это «ZeroForm»: http://madskristensen.net/post/WebForms-or-MVC-What-about-the-third-option.aspx –

0

Или вы можете использовать ASP.NET MVC. Он не использует _VIEWSTATE.

+1

ASP.NET MVC на самом деле не делает ничего особенного в этом отношении. Он просто не использует '

'. Если вы добавите это (это глупо делать), вы также получите поле '__VIEWSTATE'. –

+0

MVC - это совершенно другое (и классное, на мой взгляд!) Способ делать то, что не зависит от веб-форм, и поэтому не нуждается в . – stepanian

+0

Я думаю, что ASP.NET MVC очень уместен в вопросе, поскольку он был разработан для традиционных форм HTML/HTTP без использования состояния view/control. –

0

В ASP.NET 2.0, __VIEWSTATE держит и View State и Государственный контроль с крупной разницей, что управление может работать должным образом в течение нескольких постбэков без View State, но не Государственный контроль.

Единственные решения, как упоминал Мехрдад и Ральф, - удалить <form runat="server"> (что делает его формой HTML) или использовать ASP.NET MVC. Оба включают в себя не использование серверной формы, но ASP.NET MVC был создан с намерением не использовать какие-либо элементы управления на стороне сервера.

Для получения более подробной информации о состоянии просмотра/управления см ASP.NET State Management Overview

4

Вам необходимо переопределить следующие методы на вашей странице:

protected override void SavePageStateToPersistenceMedium(
object viewState) 
{ 
} 

protected override object LoadPageStateFromPersistenceMedium() 
{ 
    return null; 
} 

Смотрите здесь: http://weblogs.asp.net/ngur/archive/2004/03/08/85876.aspx Вы можете быть в состоянии использовать этот код переименовать переменную viewstate, если вы хотите, но я бы посоветовал это сделать.

Извлечение runat = "server" из формы также будет работать, как предложили другие.

Без viewstate вы не сможете использовать элементы управления asp.net. Возможно, вам придется переосмыслить то, что вы пытаетесь сделать, и почему вам нужно избавиться от раздела viewstate.

+0

это удалило значение, но не поле ... –

0

См. this answer. Однако, если вы не хотите, чтобы viewstate, лучший способ избавиться от него - использовать MVC.

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