【发布时间】:2011-08-16 12:51:21
【问题描述】:
什么时候不需要在 ASP.NET 中使用runat="server"?
编辑:感谢所有答案,但我真的在想 runat="server" 在 <asp: 标签内。
【问题讨论】:
标签: asp.net runatserver
什么时候不需要在 ASP.NET 中使用runat="server"?
编辑:感谢所有答案,但我真的在想 runat="server" 在 <asp: 标签内。
【问题讨论】:
标签: asp.net runatserver
当您使用 ASP.NET 控件和/或您需要在代码隐藏中以编程方式访问这些控件时,请使用 runat=server 属性。
HTML 控件不需要此属性。如果您有任何 HTML 元素,例如 <span> <div> 或 <table>,当您希望能够在代码隐藏中访问它们时,它会很有用。
<asp:Label runat="server" id="foo" />
<div runat="server" id="bar />
...
foo.Text = "Hello Label";
foo.Attributes["class"] = "baz";
【讨论】:
您需要在任何要被解析为服务器控件的控件上使用runat="server"。
任何带有runat="server" 的元素都将被解析为页面层次结构中的服务器控件。其他任何内容都将作为纯文本处理,并放入页面层次结构中的LiteralControl 控件中。
例外情况是不是真实元素的元素,而是另一个服务器标签中的特殊标签,例如ContentTemplate 标签。它们不需要runat="server",因为包含控件会解析它们。
【讨论】:
当您不希望服务器端 ASP.NET 向我们呈现服务器端变量时。
一般来说,当您不需要在服务器端操作 DOM 元素时,您不会使用它,例如仅用于布局目的。
【讨论】:
没有 runat="server" 也没有其他方法可以制作 html 控件服务器端控件。它看起来确实很奇怪,因为您不能执行 runat="client"。
因此,总而言之,您永远不能在任何 ASP .Net 控件上忽略它,它可能是为创建 ASP .Net Web 表单的开发人员查找所有服务器端控件的最简单、最简洁的方法。
来源:http://mikeschinkel.com/blog/whyrunatserverforaspnetpart2/
【讨论】:
标记 runat="server" 表示脚本块中包含的代码将在服务器上运行(而不是在客户端上)。执行时,ASP.NET 将创建包含此代码的服务器端对象以及 Page 类的实例,以包含在页面内定义的控件作为其给定类型的实例(System.Web.UI.WebControls.Textbox,例如)。此服务器端对象将根据用户请求调用,并将执行代码以响应事件。
【讨论】:
在运行时创建控件
我在运行时需要一个不需要 runat="Server" 的标签
例子
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label lblNew = new Label();
lblNew.ID ="lblnew";
lblNew.Text ="Test";
}
}
此代码在页面加载事件的运行时创建标签
【讨论】: