Всем 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
Меня зовут Адель Шигабутдинов, этот блог я использую для записок самому себе. 
Arcon
/ 10.05.2009Спасибо! Очень пригодилось!
Игорь
/ 17.08.2009А не пробовали для всей страницы вью-стэйт отключать, а там где надо — включать?
<%@ Page EnableViewState="false" %>
Примерно так
Alex
/ 20.10.2009Ну на счет полного отключения ViewState я не очень согдасен тем более перекрытиме методов страницы.
Почему?
Ответ прост, есть задача, создать модуль с разрешением параллелизма. Ну типа одну и туже статью редактируют два манагера, после запроса из БД.
1. Модель оптимистической блокировки типа кто последний тот и прав отпадает, так как после окончания редактирования кто-то из манагеров первым зафиксировал изменения, второй манагер через пару минут тоже зафиксировал изменения. Получается, что у первого манагера труд даром прошел. Отсюда вывод нужно сделать так чтобы у второго манагера не прошли изменения с вывиской что мол уже отредактировано, ранее после получения Вами данных и тут-же идет загруз результата работы первого манагера. Второй манагер уже думает а стоит ли ему что то менять, если да то его труд тоже должен быть сохранен и желательно без доп источника типа таблицы и XML, где будем сохранять работу второго манагера (ViewState) и как решить эту проблему в WinForms нет проблем, а вот в Web?
Прошу извинения за длинную задачу, но хотелось бы узнать есть у кого решения подобных ситуаций?
Если кому то интересно могу предложить вариант решения этой проблемы.
Blush
/ 22.02.2010"Alex: где будем сохранять работу второго манагера"
Честно говоря, не вижу проблемы:
0. имеем в таблице поле datetime LastUpdated
1. при открытии текста на редактирование считываем LastUpdated
2. при Update проверяем что LastUpdated в базе эквивалентен LastUpdated редактируемого сервера, в случае несовпадения возвращаем код ошибки, LastUpdated из базы (заменяем ранее прочитанный LastUpdated) и текст отредактированной более шустрым манагером статьи
3. Выводим пользователю сообщение об ошибке сохранения, окно редактора не закрываем и рядом с textarea в котором манагер правит тест выводим текст введенный шустрым конкурентом. Ну или наоборот – текст текущего менеджера в div а текст шустрого в textarea.
тотализатор
/ 22.06.2010Все оказалось очень просто. Спасибо
Cordless Drills - Makita Drill
/ 03.07.2010это в разы сократит объемы ViewState, но он все-таки будет создавать некоторое количество ненужного траффика для посетителя.
dental implant dentist
/ 05.07.2010как ViewState отключить полностью: необходимо переопределить 2 метода у базового класса страниц PageBase:
Used Auto Parts
/ 07.07.2010окно редактора не закрываем и рядом с textarea в котором манагер правит тест выводим текст введенный шустрым конкурентом. Ну или наоборот – текст текущего менеджера в div а текст шустрого в textarea.
Exclusive
/ 18.03.2011У меня ниче не отключилось… как оставались значения, так и остаются… затрахал уже этот ASP.NET(((
admin
/ 18.03.2011Ага. Попробуйте перейти на MVC 2 или MVC 3 Asp.Net