Как мы можем сделать веб-формы в asp.net без использования viewstate - PullRequest
0 голосов
/ 03 февраля 2012

Мне нужно сделать большой веб-сайт, но при использовании веб-форм в asp.net у нас возникают проблемы с viewstate. Поскольку viewstate делает сайт очень тяжелым.Есть ли у нас альтернатива для этого, я не хочу использовать MVC.

Ответы [ 4 ]

1 голос
/ 03 февраля 2012

ViewState можно отключить с помощью атрибута EnableViewState = "false" (или ViewStateMode = "disabled") на уровне веб-приложения, страницы или веб-элемента управления, и данные состояния просмотра не сохраняются в HTML.

Вы можете сохранить свои данные в Сеанс (Уникальный для каждого пользователя) или Кэш (То же для всех пользователей)

Надеюсь, это поможет!

Редактировать

Сохранить данные в сеансе:

Session["YourKeyName"] = "Object data";

Получить сохраненные данные из сеанса:

object o = Session["YourKeyName"] as object; // Where object can be any type

Сохранение данных в кэш:

Cache["YourAnotherKeyName"] = "Object data";

Получить сохраненные данные из кэша:

object o = Cache["YourAnotherKeyName"] as object; // Where object can be any type
1 голос
/ 03 февраля 2012

Здесь есть несколько «исправлений».

  1. Сохранение состояния просмотра в сеансе.Лично мне это не нравится, но это в основном потому, что я не люблю использовать сессию ни для чего.

  2. Разделение состояния просмотра по нескольким скрытым полям формы.Из коробки он хранится в одном гигантском поле.Это выполняется в вашем файле web.config путем установки maxPageStateFieldLength на что-то разумное, например, 1024.

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

  4. Отключить представление состояния в целом.Хотя мне это нравится, это не часто достижимо.Особенно, если вы используете элементы управления, которые абсолютно зависят от него (например, сетки со встроенной подкачкой ...).

Самое быстрое "исправление" - это номер 2 выше.Это позволит вам избежать проблем с некоторыми версиями сафари.По сути, ваша самая большая проблема заключается в том, что различные браузеры имеют ограничения на объем данных, которые могут отображаться в одном поле формы.

0 голосов
/ 04 февраля 2012

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

Удачи!

0 голосов
/ 03 февраля 2012

Для быстрого исправления вы можете очень легко сохранить состояние просмотра в сеансе. Есть сотни статей по этой теме.

Но в конечном итоге вам будет полезно узнать, как более эффективно использовать обзорное состояние.

...