пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

ASP.NET. Внутритекстовый и отделенные коды, примеры реализаций. Связывание файлов отделенного кода со страницами.

Visual Studio поддерживает две модели для кодирования веб-страниц:

Внутритекстовый код

Эта модель наиболее близка к традиционной модели ASP. Весь код и HTML-разметка сохраняются в одном файле с расширением .aspx. Код вставляется в один или более блоков сценария. Однако, хотя код и находится внутри блока сценария, поддержку функции IntelliSense и возможностей отладки он из-за этого не теряет, да и выполнять его линейным образом сверху вниз (подобно классическому ASP-коду) вовсе не обязательно. Вместо этого в нем по прежнему можно реагировать на события элементов управления и использовать подпрограммы.

Эта модель удобна, поскольку позволяет хранить все в одном месте безо всяких излишеств и потому часто применяется для кодирования простых веб-страниц.

Отделенный код (code-behind)

Эта модель подразумевает создание для каждой веб-страницы ASP.NET двух файлов: файла разметки (.aspx) с дескрипторами HTML и дескрипторами элементов управления, и файла кода (.cs) с исходным кодом страницы (при условии, что для программирования веб-страницы применяется язык C#). Такая модель обеспечивает более удобную схему организации, позволяя отделять пользовательский интерфейс от программной логики, что очень важно при создании сложных страниц.

Чтобы лучше понять, в чем состоит разница между моделями внутритекстового и отделенного кода, не помешает рассмотреть какую-нибудь простую страницу. В следующем примере показан код разметки для страницы по имени WebForm1.aspx, который отображает текущее время в текстовой метке и обновляет страницу всякий раз, когда в ней выполняется щелчок на кнопке. В случае использования модели внутритекстового кода эта страница будет выглядеть следующим образом:

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text = "Текущее время: " + DateTime.Now.ToLongTimeString();

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Test Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="Button1_Click" />

</div>

</form>

</body>

</html>

Приведенные ниже коды файлов WebForm1.aspx и WebForm1.aspx.cs демонстрируют, как эта же страница будет поделена на две части в случае использования модели отделенного кода:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Test Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="Button1_Click" />

</div>

</form>

</body>

</html>

namespace WebApplication1

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text = "Текущее время: " + DateTime.Now.ToLongTimeString();

} }}

Единственное реальное отличие между примером с внутритекстовым кодом и примером с отделенным кодом состоит в том, что в последнем случае класс страницы больше не является неявным, а наоборот — объявляется как класс, содержащий все методы страницы.

В целом, модель отделенного кода предпочтительнее использовать для сложных страниц. Хотя модель внутритекстового кода является немного более компактной для небольших страниц, с увеличением объема кода и HTML-разметки с ними становится гораздо проще иметь дело по отдельности. Вдобавок модель отделенного кода является более чистой с концептуальной точки зрения, поскольку явно отображает созданный класс и импортированные пространства имен. И, наконец, она также еще позволяет веб-дизайнеру улучшать разметку страниц, не затрагивая код, написанный разработчиком.

Связывание файлов отделенного кода со страницами

Каждая страница .aspx начинается с директивы Page, указывающей язык для страницы и сообщающей ASP.NET местонахождение связанного кода (если только не используется встроенный код; в этом случае код содержится в том же самом файле).

Определять местонахождение связанного кода можно несколькими способами. В более старых версиях ASP.NET было распространено использование атрибута Src для указания на исходный код либо атрибута Inherits для указания на имя скомпилированного класса. Однако обе эти возможности имеют свои индивидуальные особенности.

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

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

public partial class WebForm1 : System.Web.UI.Page

{ ... }

Когда есть такая часть инфраструктуры, все остальное несложно. Для указания используемого класса в странице .aspx применяется атрибут Inherits, а для указания файла, в котором содержится отделенный код — атрибут CodeBehind:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

Обратите внимание, что Visual Studio использует несколько необычный синтаксис именования для файла исходного кода. Он содержит полное имя соответствующей веб-страницы, снабженное расширением .aspx и в конце сопровождаемое расширением .cs. Это просто соглашение, помогающее избежать проблемы при создании двух различных типов файлов отделенного кода (например, веб-страницы и веб-службы) с одинаковыми именами.

 

 

 


11.01.2019; 16:47
хиты: 100
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь