Как отключить ViewState на страницах ASP.NET
Всем ASP.NET разработчикам известно, что Microsoft по совершенно непонятным причинам для всех эелементов на странице по умолчанию прописывает EnableViewState = true, как результат, огромный ViewState (который хранит hash-ы состояний aspx страниц), который никак не используется, а только безбожно жрет траффик.
Можно, конечно, помучаться и пописать для каждого серверного элемента ручками EnableViewState = false, и это в разы сократит объемы ViewState, но он все-таки будет создавать некоторое количество ненужного траффика для посетителя.
И вот недавно нашлось решение, как ViewState отключить полностью: необходимо переопределить 2 метода у базового класса страниц PageBase:
protected override void SavePageStateToPersistenceMedium(object state)
{
}
protected override object LoadPageStateFromPersistenceMedium()
{
return null;
}
В результате получается вполне приличный результат:
<input name="__VIEWSTATE" id="__VIEWSTATE" type="hidden" / >
Нашел в блоге у одного из ASP.NET разработчиков Дмитрия Дмитриева: http://progblog.ru/Posts/DisableViewState
Спасибо! Очень пригодилось!
А не пробовали для всей страницы вью-стэйт отключать, а там где надо — включать?
<%@ Page EnableViewState="false" %>
Примерно так
Ну на счет полного отключения ViewState я не очень согдасен тем более перекрытиме методов страницы.
Почему?
Ответ прост, есть задача, создать модуль с разрешением параллелизма. Ну типа одну и туже статью редактируют два манагера, после запроса из БД.
Прошу извинения за длинную задачу, но хотелось бы узнать есть у кого решения подобных ситуаций?
Если кому то интересно могу предложить вариант решения этой проблемы.
"Alex: где будем сохранять работу второго манагера"
Честно говоря, не вижу проблемы:
Все оказалось очень просто. Спасибо
это в разы сократит объемы ViewState, но он все-таки будет создавать некоторое количество ненужного траффика для посетителя.
как ViewState отключить полностью: необходимо переопределить 2 метода у базового класса страниц PageBase:
окно редактора не закрываем и рядом с textarea в котором манагер правит тест выводим текст введенный шустрым конкурентом. Ну или наоборот — текст текущего менеджера в div а текст шустрого в textarea.
У меня ниче не отключилось... как оставались значения, так и остаются... затрахал уже этот ASP.NET(((
Ага. Попробуйте перейти на MVC 2 или MVC 3 Asp.Net
Иногда нельзя просто отключить ViewState, например, когда нам все-таки необходимо хранить данные о сессии. Тогда можно изменит способ хранения данных, хранить не на странице, а в сессии на сервере веб-приложения. http://stud-work.ru/index.php/kak-udalit-viewstate-so-stranitsy