ASP. NET 4. 0: ViewStateMode... Надає вам більше керування ViewState! (Українська (Ukrainian))

ASP. NET 4. 0: ViewStateMode... Надає вам більше керування ViewState!

Thursday, 18 February 2010

//

3 minute read

ViewState - це біль... там, я сказав! Що спричиняє найбільше болю з ViewState є тим фактом, що люди зловживають ним багато, залишаючи це дозволено для будь-якого керування сторінкою, коли насправді вам потрібно тільки той один контроль, який дійсно потребує, щоб тримати його на наступній сторінці. Дейв Рід розробник команди ASP.NET написав епічний допис на біса Що таке ViewState, і перш ніж читати те, що буде далі, вам дійсно слід спочатку прочитати це

Назад?

Добре, тепер ви розумієте, що ви повинні використовувати тільки ViewState для тих засобів, які насправді потребують його. але тут являється проблема... те, що ви дійсно хотіли зробити це вимкнути ViewState для всієї сторінки, а потім просто увімкнути її знову для контроль, который нуждается в нем, Вибачте, але у мене є погані новини, ви можете зробити це у будь- якій версії ASP.NET до і, зокрема, до ASP. NET 3. 5 SC1. У мене також є хороші новини... Ви можете зробити це, коли вийде ASP. NET 4. 0! Чарівна маленька властивість всіх ASP. NET, яка дозволяє вам зробити це називається ViewStateMode. (Іноді це було.) Дейвсlithuania_ municipalities. kgm ідея та наведені нижче зразки є безсоромним відривом від нього: -)

Просто кажучи, ViewStateMode має 3 можливі значення, Увімкнено, Вимкнено і УспадкуватиЯкі досить очевидні у їх функції...Увімкнено turn save ViewState on for that control (або будь-яке дочірнє керування, яке встановлено як }Іншіт, або нічого не встановлено), Вимкнено знову вимкнути і Успадкувати Це дійсно все, що є в ній!

Тут ми бачимо дуже простий зразок того, як це насправді працює:

<funt=" form1" runat=" server ">

<script runat= сягмент@ info: credit>

reserve over void OnLoad} PURTArgs e) {

if (! IsPostBack) {

label1.Text = label2.Text = "[Динамічне значення] ";

}

base. OnLoad'e);

}

</ script>

<asp: PlaceLaiter ID=" PlasesTolder1 " runat=" server" ViewStateMode=" Disabled ">

Вимкнено: <asp: Label ID=" label1 " runat=" server" Text=" Name[Оголошене_Значення] " /><br />

<asp: PlaceLaiter ID=" PlaceLaiter2" runat=" server "ViewStateMode=" Enabled">

Увімкнено: <asp: Label ID=" label2 " runat=" server" Text=" Name[Оголошене_Значення] " />

</ asp: PlaceSeter>

</ asp: PlaceSeter>

<hr />

<asp: button ID=" Cutton1" runat=" server" Text="Postback " />

Як ви можете бачити в цій вибірці, ми знімаємо ViewState для керування PaceSeter1, дитина label1 успадковує цю властивість (як успадковість є типовою) і таким чином не зберігає ViewState In PaceSeter2 ми встановимо ViewStateMode до }Enabled}, яка веде до label2 Успадковування цієї властивості, і таким чином зберігає ViewState На першій сторінці ми обоє встановлюємо мітки на вихідний текст [Динамічне значення]

Результатом всього цього є те, що після завантаження сторінки ви побачите такі мітки:

Вимкнено: [Динамічне значення]

Увімкнено: [Динамічне значення]

Але, зробіть PostBack і ви бачите:

Вимкнено: [ОголошенняЗначенняЗначенняЗначенняЗначенняЗначенняМ

Увімкнено: [Динамічне значення]

Як ви очікуєте тепер, перша мітка зберігала цінність, яку ми встановили до ViewState Друга мітка має!

Що дійсно кльово, так це те, що ви також можете це зробити.

<% @ Page Language=" C# " AutoEventWireup=" true" CodeBeind=" default. aspx. cs" Успадковує=" WebApplication1._ Типовий " ViewStateMode=" Disabled" %>

Пам' ятайте, на сторінці WebForms є просто ще один засіб керування... він виконує роль батьківського керування для всіх інших засобів керування на сторінці. Це означає, що жоден з засобів керування не збереже ViewState якщо ви не встановили параметр ViewStateMode у режимі " Увімкнено " Для того контролю або контролю дальше вгору він ступає контрольна ієрархія (отже, велике використання було б для держаків ContentPlases в MasterPages...).

Я ж казав, що це просто!

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.