Опубликован: 01.11.2004 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 28:

Серверные приложения

< Лекция 27 || Лекция 28: 1234

Создание 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(); }
}

Различие между двумя моделями ASP.NET страниц существует только на этапе проектирования. После компиляции страницы, спроектированные на базе различных моделей, представляются одинаковым образом.

При использовании модели страницы с последующим кодом в код класса автоматически добавляется метод 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>
< Лекция 27 || Лекция 28: 1234
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);