如何:将 Web 窗体页转换为 ASP.NET 用户控件

更新:2007 年 11 月

如果已经开发了 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(zh-cn,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 用户控件概述