logo search
[ПСП] / lab22

Связка *.Aspx/Codebehind

Помимо готовых членов, унаследованных от Page, мы можем определить в своем классе С# собственные члены, которые могут быть вызваны (не напрямую) при помощи блоков <%...%> в файле *.aspx. В классических ASP все дополнительные возможности приходилось определять непосредственно в коде файла *.asp. В ре­зультате этот файл превращался в совершеннейшие джунгли из тегов HTML и ко­да VBScript (или JavaScript). Читать такие файлы было очень тяжело, а использо­вать их код повторно — еще тяжелее.

В ASP.NET эта проблема решена за счет того, что код представления (то есть код для генерации кода HTML) помещен в файл *.aspx, а прочая программная ло­гика — обычным образом в файл С# *.aspx.cs.

Как же происходит обращение к пользовательским членам класса, производ­ного от Page? Предположим, что мы определили в таком классе простенькую функ­цию, возвращающую текущее значение даты и времени:

public class WebForml : System.Web.UI.Page

// Автоматически сгенерированный код... public string GetDateTime()

{

return DateTime.Now.ToString();

}

Обратиться к этой функции из файла *.aspx можно так:

<body>

<!- Получаем информацию о времени от класса С# ->

<% Response.Write(GetDateTime()); %>

<form method="post" runat="server" ID=Form1>

</form>

</body>

Конечно, можно использовать нужные нам унаследованные от Page члены непо­средственно внутри класса С#. Например, можно определить нашу функцию так:

public class WebForml : System.Web.UI.Page

{

// Автоматически сгенерированный код... public void GetDateTime()

{

Response.Write(“It is now " + DateTime.Now.ToString());

}

}

А затем просто вызывать эту функцию:

<!- Получаем время ->

<% GetDateTime(); %>