Когда EnableViewState нужно включить на управлении сервером?

26
задан DavidRR 30 October 2014 в 15:24
поделиться

7 ответов

Вот хорошее эмпирическое правило: Если Вы (1) изменяете значение свойства в коде - позади и (2) необходимо знать то, что оценивает Вас набор в более поздней обратной передаче, не повторно вычисляя значение, тогда необходимо использовать ViewState.

, Например. В разметке моей страницы мне можно было бы определить Элемент управления "метка" как это:

<asp:Label ID="TitleLabel" runat="server" Text="Update this Employee" />

Тогда в событии Page_Load у меня есть этот код:

If Not IsPostBack AndAlso myEmployeeObject.IsNew Then TitleLabel.Text = "Create a new Employee"

Путем изменения значения текстового свойства, я ввел новый элемент в ViewState. Если я получу значение свойства Label's Text во время какого-либо последующего PostBack, значение будет, "Создают нового Сотрудника".

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

В моем предыдущем примере, я выбрал бы повторно вычислять свойство Label's Text на каждый PostBack и прекращать хранить текстовое свойство в ViewState. Это - то, как моя обновленная разметка посмотрела бы:

<asp:Label ID="TitleLabel" runat="server" Text="Update this Employee" EnableViewState="false" />

И мое обновленное событие Page_Load:

If myEmployeeObject.IsNew Then TitleLabel.Text = "Create a new Employee"
20
ответ дан Ken Browning 28 November 2019 в 17:19
поделиться

Только время, необходимо использовать состояние отображения, - когда необходимо вернуть значение того сосунка на обратной передаче или чем-то. Таким образом для примера маркировки Вам только было бы нужно состояние отображения, включенное, если бы у Вас был код, который сказал что-то как

void Button1_Click()
{
   label1.text += " more!";
}

без состояния отображения, обратная передача не могла выяснить содержание маркировки, и Вы просто доберетесь "больше!" много раз без добавляют. попробуйте его.

Действительно, наш эмпирическое правило в моем офисе, просто выключают его на уровне страницы и затем включают его, поскольку Вам нужен он.

1
ответ дан Phil Scott 28 November 2019 в 17:19
поделиться

Сначала разберитесь с состоянием просмотра, вот запись в блоге , которая может помочь. Начните разрабатывать свои страницы, отключив состояние просмотра на уровне страницы. Большинство элементов управления в asp .net 2.0 сохраняют состояние, необходимое для их функционирования в состоянии элемента управления, поэтому отключение состояния просмотра не влияет на большинство элементов управления.

Для элементов управления, которые сохраняют привязанные к ним данные в состоянии просмотра, например в поле списка, вы можете избежать попадания данных в состояние просмотра (что хорошо работает в большинстве случаев использования), выполнив привязку к PreInit. событие.

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

И, наконец, используйте инструменты, которые помогут вам видеть байты в состоянии просмотра вашей страницы. Помощник ASP.NET View State и надстройка в Fiddler, которая показывает данные состояния просмотра, очень вам в этом помогут.

1
ответ дан etsuba 28 November 2019 в 17:19
поделиться

только enableviewstate, когда Вы хотите сохранить значения через запросы HTTP кроме того содержания это = ложь. также Вы не имеете к enableviewstate для использования управления.

0
ответ дан willz 28 November 2019 в 17:19
поделиться

Всякий раз, когда у вас есть элемент управления, для которого будет важно содержимое (например, текстовое поле или выпадающий список), вы хотите включить viewstate, чтобы контент был доступен и обновлялся до даты при обратной передаче.

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

0
ответ дан Dan McClain 28 November 2019 в 17:19
поделиться

Необходимо удостовериться, что Вы понимаете ViewState лучше. Никакой общий оператор как "только не включает ViewState, если Вы будете иметь к", то будет действительно иметь смысл, если Вы не делаете. Поймите, когда состояние отображения получит loaded/saved/dirtied.

вот одна из лучших статей, которые я видел

0
ответ дан Al W 28 November 2019 в 17:19
поделиться

Если честно, я не могу вспомнить, когда бы вы хотели, чтобы для viewstate было установлено значение true для элементов управления меткой. Это быстрый способ заставить ваш w3wp.exe занимать запасы памяти .

0
ответ дан WhiteSites 28 November 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: