Как указывалось во всех постах, вы можете сделать некоторую форму сжатия несколькими способами, вы можете реализовать ее самостоятельно или купить компрессор viewstate, но это вам не сильно поможет. Что может быть интересным - это степень сжатия, которую вы должны ожидать. Взгляните на: RadCompression , чтобы получить некоторую информацию о степени сжатия и улучшениях производительности, которые в целом одинаковы для всех вариантов (бесплатно / платно).
Мое мнение, что ставки не являются удовлетворительными, и вы должны искать варианты дизайна для вашей проблемы.
Теперь, если я правильно понимаю, вы хотите отредактировать строку сетки в форме на той же странице. Из комментариев вы используете панель обновлений, и в соответствии с описанным поведением у вас есть и сетка, и форма редактирования на панели обновлений.
Если на вашей странице есть только сетка и форма редактирования, размещение их на панели обновлений совсем не поможет.
Я сделал небольшой пример для целей тестирования, и у меня была сетка из 10 строк с 5 столбцами и форма редактирования для 5 полей на одной странице.
Мои наблюдения:
- Наличие сетки без стиля дало мне 1500 знаков состояния, которое составляет 2 КБ. Добавление стилей позволит вам получить гораздо больше данных в viewstate, вы можете проверить любые примеры платных элементов управления сеткой и увидеть, что количество несжатого viewstate постоянно увеличивается для сотен строк.
- Постбэк страницы отверстия (без панели обновления) на выбранном элементе сетки сделал запрос 3 КБ и получил ответ 6 КБ
- Постбэк с использованием панели обновления, которая окружает сетку и форму редактирования, сделал запрос 3 КБ и получил ответ примерно 6 КБ. Размер контента практически не меняется.
Это потому, что использование панели обновления в основном означает, что вы обновляете не всю страницу, а только область внутри панели обновлений + состояние представления. Так что, если вся ваша страница окружена панелью обновлений, это вам совсем не поможет, и нечестно называть ее AJAX:).
Теперь у веб-форм asp.net есть свои сильные стороны, но я считаю, что никому больше не нравятся веб-формы asp.net, особенно когда под рукой есть asp.net mvc / wcf / jquery. Ваш вопрос доказывает одно из ограничений веб-форм asp.net при использовании по назначению.
Мое общее решение вашей проблемы:
- Используйте только элементы управления html для отображения данных (ваша сетка должна быть плагином jquery / extjs, который отображает данные json, полученные из веб-службы с поддержкой ajax WCF). Избавление от сетки asp поможет вам практически полностью уменьшить представление и сделать источник вашей страницы читабельным.
- Создание веб-службы Ajax WCF и обмен json в отношении <-> wcf клиента (примеры используемых методов: getgriddata, addnewrow, deleterow, editrow). Наличие этих методов означает, что вам вообще не придется отправлять постбэк, и это сделает вашу страницу еще приятнее и отзывчивее. Также я бы постарался не использовать какой-либо код в событиях страницы.
- Позвоните в ваш веб-сервис, используя jquery или другой javascript Framework, который вы предпочитаете убедившись, что вы не используете ужасный asp: ScriptManager поможет вам избавиться от нескольких вызовов /ScriptResource.axd? и какой-то странный вид в исходном javascript, который делает некоторые подключения.