你能解释一下带有“runat=server”属性的控件和html组件之间的区别吗?使用它的最佳做法是什么?谢谢。
2 回答
<span runat="server" id="myspan"> </span>
映射到System.Web.UI.HtmlControls 中定义的GenericControl类。从它的msdn描述:
System.Web.UI.HtmlControls 命名空间包含允许您在 Web 窗体页上创建 HTML 服务器控件的类。HTML 服务器控件在服务器上运行并直接映射到大多数浏览器支持的标准 HTML 标记。这允许您以编程方式控制 Web 表单页面上的 HTML 元素。
<asp:Label runat="server" id="asplabel"></asp:Label>
映射到 System.Web.UI.WebControls 中的Label类。从它的msdn描述
System.Web.UI.WebControls 命名空间包含允许您在网页上创建 Web 服务器控件的类。Web 服务器控件在服务器上运行,包括按钮和文本框等表单控件。它们还包括特殊用途的控件,例如日历。由于 Web 服务器控件在服务器上运行,因此您可以以编程方式控制这些元素。尽管 Web 服务器控件呈现为 HTML,但它们的对象模型不一定反映 HTML 语法。
System.Web.UI.WebControls 命名空间包含呈现为 HTML 标记的类,例如 TextBox 控件和 ListBox 控件。命名空间还包含不在网页上呈现但支持数据操作的类,例如 SqlDataSource 和 ObjectDataSource 类。其他控件,如 GridView 和 DetailsView 控件,支持数据显示和编辑。WebControl 类充当 System.Web.UI.WebControls 命名空间中许多类的基类。
基本上,来自 WebControl 命名空间的控件为您提供了更多功能,其设计目的是尽可能地模仿 VB6 表单,以便在 winclient 和 webclient 编程之间无缝转换(来回)。
我个人倾向于尽可能多地使用 WebControls 命名空间中的控件,并且仅当我需要在 WebControl 上不可用且不可覆盖的行为时才回退到 HtmlConttols。
K. Scot Allen 关于同一主题的博客
服务器控件是服务器可以理解的标签。
共有三种服务器控件: HTML Server Controls - 传统 HTML 标签 Web Server Controls - 新的 ASP.NET 标签 Validation Server Controls - 用于输入验证
HTML 服务器控件:
默认情况下,ASP.NET 文件中的 HTML 元素被视为文本。要使这些元素可编程,请将 runat="server" 属性添加到 HTML 元素。
例子:
<form runat="server">
......
</form>
网络服务器控制:
Web 服务器控件是服务器可以理解的特殊 ASP.NET 标记。
与 HTML 服务器控件一样,Web 服务器控件也是在服务器上创建的,它们需要 runat="server" 属性才能工作。但是,Web 服务器控件不一定映射到任何现有的 HTML 元素,它们可能表示更复杂的元素。
例子:
<asp:Button ID="but" runat="server"/>
验证服务器控件:
验证服务器控件用于验证用户输入。如果用户输入未通过验证,它将向用户显示错误消息。
例子:
<asp:RequiredFieldValidator ID="req1" runat="server" ControlToValidator="TextBox1" ErrorMessage="please enter proper details"/>