Поделиться через


Практическое руководство. Преобразование страниц веб-форм в пользовательские элементы управления ASP.NET

Обновлен: Ноябрь 2007

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

Преобразование однофайловой веб-страницы ASP.NET в пользовательский элемент управления

  1. Переименуйте элемент управления таким образом, чтобы файл получил расширение ASCX.

  2. Удалите из страницы элементы html, body и form.

  3. Измените директиву @ Page на директиву @ Control.

  4. Удалите все атрибуты директивы @ Control, кроме Language, AutoEventWireup (если есть), CodeFile и Inherits.

  5. Включите в директиву @ Control атрибут className. Это позволит обеспечить строгую типизацию пользовательского элемента управления при его добавлении на страницу.

Преобразование веб-страницы ASP.NET с выделенным кодом в пользовательский элемент управления

  1. Измените расширение файла с ASPX на ASCX.

  2. Переименуйте файл с выделенным кодом таким образом, чтобы он получил расширение .ASCX.VB или .ASCX.CS, в зависимости от используемого языка программирования.

  3. Откройте файл с выделенным кодом и измените класс, от которого производится наследование, с Page на UserControl.

  4. В ASPX-файле выполните указанные ниже действия.

    1. Удалите из страницы элементы html, body и form.

    2. Измените директиву @ Page на директиву @ Control.

    3. Удалите все атрибуты директивы @ Control, кроме Language, AutoEventWireup (если есть), CodeFile и Inherits.

    4. В директиве @ Control измените атрибут CodeFile таким образом, чтобы он указывал на переименованный файл с выделенным кодом.

  5. Включите в директиву @ Control атрибут className. Это позволит обеспечить строгую типизацию пользовательского элемента управления при его добавлении на страницу.

Пример

В приведенном ниже примере показаны однофайловая веб-страница ASP.NET в исходном виде и пользовательский элемент управления, получившийся в результате преобразования страницы.

2x6sx01c.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

В данном примере используется текстовое поле для ввода пользовательских данных, что представляет потенциальную угрозу безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ Page Language="VB" %>
<html>
<script runat=server>
Sub EnterBtn_Click(sender as Object, e as EventArgs)
    Label1.Text = "Hi " & Name.Text & " welcome to ASP.NET!"
End Sub
</script>
<body>
<h3> <u>Web Forms Page</u> </h3>
<form>
    Enter Name: <asp:textbox id="Name" runat=server/>
    <asp:button Text="Enter" OnClick="EnterBtn_Click"
        runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script runat=server>
void EnterBtn_Click(Object sender, EventArgs e)
{
    Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
}
</script>
<body>
<h3> <u>Web Forms Page</u> </h3>
<form>
Enter Name: <asp:textbox id="Name" runat=server/>
<asp:button Text="Enter" OnClick="EnterBtn_Click"
    runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>
</form>
</body>
</html>
<%@ Control Language="VB" ClassName="SampleUserControl" %>
<h3> <u>User Control</u> </h3>
<script runat=server>
Sub EnterBtn_Click(sender as Object, e as EventArgs)
    Label1.Text = "Hi " & Name.Text & " welcome to ASP.NET!"
End Sub
</script>
Enter Name: <asp:textbox id="Name" runat=server/>
<asp:button Text="Enter" OnClick="EnterBtn_Click"
    runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>
<%@ Control Language="C#" ClassName="SampleUserControl" %>
<h3> <u>User Control</u> </h3>
<script runat=server>
void EnterBtn_Click(Object Sender, EventArgs e)
{
    Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
}
</script>
Enter Name: <asp:textbox id="Name" runat=server/>
<asp:button Text="Enter" OnClick="EnterBtn_Click"
runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>

См. также

Задачи

Практическое руководство. Создание пользовательских элементов управления ASP.NET

Основные понятия

Общие сведения о пользовательских элементах управления ASP.NET