如何:将 Web 窗体页转换为 ASP.NET 用户控件
更新:2007 年 11 月
如果已经开发了 ASP.NET 网页并打算在整个应用程序中访问其功能,则可以对该页面略加改动,将它更改为一个用户控件。
将单文件 ASP.NET 网页转换为用户控件
重命名控件使其文件扩展名为 .ascx。
从该页面中移除 html、body 和 form 元素。
移除 @ Control 指令中除 Language、AutoEventWireup(如果存在)、CodeFile 和 Inherits 之外的所有属性。
在 @ Control 指令中包含 className 属性。这允许将用户控件添加到页面时对其进行强类型化。
将代码隐藏 ASP.NET 网页转换为用户控件
重命名 .aspx 文件,使其文件扩展名为 .ascx。
根据代码隐藏文件使用的编程语言,重命名代码隐藏文件使其文件扩展名为 .ascx.vb 或 .ascx.cs。
打开代码隐藏文件并将该文件继承的类从 Page 更改为 UserControl。
在 .aspx 文件中,执行以下操作:
在 @ Control 指令中包含 className 属性。这允许将用户控件添加到页面时对其进行强类型化。
示例
下面的示例演示原始格式的单文件 ASP.NET 网页和该页面转换后得到的用户控件。
安全说明: |
---|
该示例具有一个文本框,用于接受用户输入,这是一个潜在的安全威胁。默认情况下,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/>