Создание Web-форм В VisualStudio .NET
Web-формы можно добавлять в следующие проекты .NET:
- ASP.NET Web Site
- ASP.NET. Web Service
- Empty Web Site
- Personal Web Site Starter Kit
Расположить проект можно как в файловой системе, так и на web-сервере. Если выбрано расположение HTTP, то для локального сервера поле Location следует установить равным http//localhost/каталог_проекта.
При создании проекта типа ASP.NET Web Site мастер проекта формирует следующие файлы web -приложения:
- Default.aspx - текст HTML-страницы:
- Default.aspx.cs - подключаемые пространства имен и метод Page_Load.
В проект можно добавлять ранее созданные таблицы стилей.
Таблицы стилей добавляются как новый элемент. При этом в проект добавляется файл с расширением css (например, StyleSheet.css).
Следующий код иллюстрирует ASP-файл, используемый для отображения формы с 4 элементами управления:
// Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } // Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> <link rel=stylesheet type="text/css" href=StyleSheet.css /> </head> <script language="javascript" type="text/javascript"> // <!CDATA[
function Submit1_onclick() { alert("1234567"); }
// ]]> </script> </head> <body> <form id="form1" runat="server"> <div title="Заголовок"> <input id="Text1" type="text" class="Cl1" value="12345" /> <input id="Checkbox1" checked="checked" style="width: 52px; height: 56px" title="Флажок1" type="checkbox" /> <input id="Button1" title="Кнопка 1" type="button" value="button" /> <input id="Submit1" type="submit" value="submit" onclick="return Submit1_onclick()" /> </div> </form> </body> </html>
// StyleSheet.css - файл таблицы стилей body { font-size: 18pt; color: blue; } .Cl1 { font-size: 24pt; color: red; }
Листинг 28.3.
Таблица стилей содержит набор селекторов с описанием стиля для каждого селектора. Селектором может быть имя тега, имя класса (указываемое после символа "."), имя идентификатора (указываемое после символа "#").
Описание стиля для селектора указывается в виде списка, разделенного символами ";" и заключенного в фигурные скобки. Описание стиля состоит из пар "имя_атрибута: значение".
Подключение таблицы стилей выполняется в заголовке HTML-файла строкой <link rel=stylesheet type="text/css" href=StyleSheet.css />.
Строка <%@ Page Language="C#" AutoEventWireup="true" CodeFile= "Default.aspx.cs" Inherits="_Default" %> содержит тег Page, представляющий HTML-страницу. Атрибут CodeFile указывает файл кода класса, производного от любого класса, наследуемого от System.Web.UI.Page. Атрибут Language определяет язык, используемый при компиляции конструкций вида <% %> и <%= %>. В качестве языка может выступать любой язык программирования, поддерживаемый .NET Framework, включая Visual Basic, C# или Jscript. Для любой страницы может быть указан только один используемый язык.
Страницы ASP.NET состоят из двух частей:
- визуальных элементов, включающих разметку, серверные элементы и статический текст;
- программных фрагментов, включающих обработку событий и другой выполнимый код.
Технология ASP.NET предоставляет две модели управления визуальными элементами и кодом:
- модель простого файла (single-file page model), при которой на странице описываются визуальные элементы, разметка и выполняемый код;
- модель страницы с последующим кодом (code-behind page model), при которой на странице описываются визуальные элементы и разметка, а код размещается в отдельном файле (таком как Default.aspx.cs).
В следующей таблице приведен пример HTML-страницы, разработанной на базе этих двух моделей.
<%@ Page Language="C#" %> <script runat="server"> void Button1_Click(Object sender, EventArgs e) { Label1.Text = "Время: " + DateTime.Now.ToString(); } </script> <html> <head> <title>Single-File Page Model</title> </head> <body> <form runat="server"> <div> <asp:Label id="Label1" runat="server" Text="Label"> </asp:Label> <br /> <asp:Button id="Button1" runat="server" onclick="Button1_Click" Text="Button"> </asp:Button> </div> </form> </body> </html> | <%@ Page Language="C#" CodeFile="MyPage.aspx.cs" Inherits="MyPage" AutoEventWireup="true" %> <html> <head runat="server" > <title>Code-Behind Page Model</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label id="Label1" runat="server" Text="Label" > </asp:Label> <br /> <asp:Button id="Button1" runat="server" onclick="Button1_Click" Text="Button" > </asp:Button> </div> </form> </body> </html> |
// Файл MyPage.aspx.cs using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class MyPage : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "Время: " + DateTime.Now.ToString(); } } |
При использовании модели страницы с последующим кодом в код класса автоматически добавляется метод Page_Load, выполняемый перед отображением страницы. Так, в этот метод можно вставить код, выполняющий инициализацию некоторых полей формы.
Этот же метод можно вставить и как скрипт в начало файла при использовании модели простого файла.
Например
// Форма: <form id="form1" runat="server"> <asp:Label id="Message1" runat="server"/> <asp:Button id="Button1" Text="abc" runat="server" /> </form> // Код метода: <%@ Page Language="C#" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); if (Page.IsPostBack) // Страница отображается как // обратное сообщение клиенту sb.Append("Ответ<br>"); sb.Append("HOST: " + Page.Request.UserHostAddress + ".<br>"); Message1.Text = sb.ToString(); // Запись в элемент // управления типа Label // с ID равным Message1 } </script>