Кратко съдържание



страница29/33
Дата23.07.2016
Размер10.53 Mb.
#1889
1   ...   25   26   27   28   29   30   31   32   33

Code-behind


Отделянето на програмния (C#) код, свързан с презентационната логика на приложение­то, от потребителския му интерфейс значително улеснява поддръжката на уеб приложенията.

В ASP.NET кодът на aspx страниците обикновено се отделя от програмния (C#) код, който ги управлява. Този програмен код се грижи за подготов­ката на страницата за визуализация и за взаимодей­ствието с потребителя и е известен още като "презента­ционна логика". В него се обработват събитията, предизвикани от контро­лите в уеб формата.

За отделянето на презентационната логика от потребителския интерфейс обикновено с всяка aspx страница е свързан един C# клас – файл с раз­ширение aspx.cs. Този файл е известен като "code behind" и се поддържа автоматично от VS.NET.

Добавяне на код в уеб форма


Добавянето на код в ASP.NET уеб форма ви дава възможност да предос­тавите функционалността, от която потребителят се нуждае. Без код вашето уеб приложение може да изглежда добре, но няма да прави нищо.

Добавянето на код в уеб форма става по един от три начина:



  • Mixed code – кодът е в същия файл, в който е и уеб съдържанието. Този метод не се препоръчва, защото води до сложен и труден за поддържане код. Използвал се е при ASP приложенията. Такъв метод видяхме в някои от примерите от последната демонстрация.

  • Inline code – кодът е отделен в отделна SCRIPT секция в същия файл.

  • Code-behind – кодът е в code-behind страница – отделен файл от този на HTML съдържанието. Когато използвате Visual Studio.NET, това е методът по подразбиране.

Inline code


Когато се използва inline код, HTML кодът и inline кодът са в отделни секции на един и същ .aspx файл. Това разделение е за яснота, когато се чете страницата. Двете секции могат да се намират навсякъде по страницата.



...




Code-behind класове


Code-behind класовете представляват отделни компилирани класове, който съдържат програмната логика на страницата. Всяка уеб страница в едно уеб приложение има собствена code-behind страница. По подразби­ране code-behind страницата има същото име като уеб страницата, с която е асоциирана. Разширението на файла е .aspx.vb или .aspx.cs в зависи­мост от това какъв език е бил използван. Когато уеб приложението се изпълнява двата файла формират цялата страница.

Как работи code-behind?


За да асоциира една .aspx страница с нейната code-behind страница, Visual Studio .NET добавя три атрибута към @Page директивата:

  • Inheritsпозволява на .aspx страницата да наследява code-behind класа.

  • Codebehind – използва се вътрешно от Visual Studio .NET, за да асоциира файловете.

  • Src – съдържа името на code-behind страницата. Използва се, ако уеб приложението не е прекомпилирано.

<%@ Page Language="c#"

Inherits="MyProject.WebForm1"

Codebehind="WebForm1.aspx.cs"

Src="WebForm1.aspx.cs" %>


JIT компилация


Code-behind страницата може или да бъде прекомпилирана от Visual Studio .NET, когато се компилира уеб приложение, или да бъде just-in-time (JIT) компилирана при първата заявка.

Ако Src атрибутът липсва от <@Page ...> директивата в .aspx файла, при build на приложението страницата се компилира. По подразбиране Visual Studio .NET не добавя атрибута Src, т.е. всички code-behind страници са компилирани, когато се стартира приложението. Прекомпилирането спес­тява забавянето при първа заявка за съответната страница. Друго пре­димство е, че няма нужда сорс кодът на code-behind страниците да се раз­пространява до уеб сървъра.

Когато се използва JIT компилация, code-behind страницата се компилира при първа заявка. Съответно първата заявка е по-бавна.

Събития


Когато потребител взаимодейства с уеб форма (щрака, избира, въвежда данни), се генерира събитие (event). Действието, което трябва да се извършва в отговор, се реализира в събитийна (event) процедура.

Прихващане на събития


Нека създадем контрола, за да генерираме събитие в уеб формата. Visual Studio .NET декларира променлива в code-behind страницата с име като id атрибута на контролата.

Следният HTML код дефинира уеб форма и бутон с id="Button1":









В code-behind страницата се декларира променлива със същото име:

protected System.Web.UI.WebControls.Button Button1;

Когато щракнем с мишката два пъти върху този бутон, VS.NET прихваща събитието "натискане на бутона" и генерира метод, който се извиква при неговото настъпване. Ето как изглежда генерираният метод:

private void Cmd1_Click(object sender, System.EventArgs e)

{

// Event handling goes here ...



}

Самото абониране за събитието на бутона става по начина, по който става в Windows Forms. VS.NET добавя следния код в инициализационната част на страницата:

this.Button1.Click +=

new System.EventHandler(this.Button1_Click);


Свойството AutoEventWireup


Свойството AutoEventWireup указва дали събитията автоматично да се връзват към страницата.

Ако е true, следният код е излишен (изпълнява се автоматично):



this.Init += new System.EventHandler(this.Page_Init);

this.Load += new System.EventHandler(this.Page_Load);



ASP.NET сам намира методи с имена като Button1_Click и ги извиква като обработчик на събитието Click за контрол Button1.

При нужда от висока производителност, се препоръчва да не се използва автоматично връзване.





Сподели с приятели:
1   ...   25   26   27   28   29   30   31   32   33




©obuch.info 2024
отнасят до администрацията

    Начална страница