在ASP.NET中什么情况下不使用runat="server"?

4
何时不需要在ASP.NET中使用runat="server"
编辑:感谢所有的答案,但我真正考虑的是在<asp:标记内部使用runat="server"
6个回答

3

当您使用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";

1

您需要在任何要解析为服务器控件的控件上使用runat="server"

任何带有runat="server"的元素都将被解析为页面层次结构中的服务器控件。其他任何内容都将被处理为纯文本,并放置在页面层次结构中的LiteralControl控件中。

例外情况是不是真正的元素,而是另一个服务器标记内的特殊标记,例如ContentTemplate标记。它们不需要runat="server",因为包含控件将对它们进行解析。


0

在运行时创建控件

我需要一个标签在运行时,此时不需要 runat="Server" 属性

示例

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
   {
    Label  lblNew = new Label();
    lblNew.ID ="lblnew";
    lblNew.Text ="Test";
    }
}

这段代码在页面加载事件中动态创建标签。

嗯...我不明白你在说什么——可能是语言问题,因为我不是以英语为母语的人 :-) 请尽量澄清。 - kleopatra

0

当您不希望服务器端ASP.NET针对我们呈现服务器端变量时。

一般来说,当您不需要在服务器端操作DOM元素时,例如仅用于布局目的时,您不会使用它。


0

如果没有runat="server",也没有其他方法可以将html控件变成服务器端控件。这看起来很奇怪,因为你不能做runat="client"。

所以总结一下,在任何ASP .Net控件上都不能省略它,对于创建ASP .Net Web表单的开发人员来说,这可能是最简单和最干净的查找所有服务器端控件的方法。

来源:http://mikeschinkel.com/blog/whyrunatserverforaspnetpart2/


0

Tag runat="server" 表示脚本块中包含的代码将在服务器上运行(而不是在客户端上)。在执行时,ASP.NET 将创建包含此代码以及页面类的实例作为其给定类型的控件的实例(例如 System.Web.UI.WebControls.Textbox)的服务器端对象。该服务器端对象将在用户请求时被调用,并响应事件执行代码。


问题是:在ASP.NET中什么情况下不使用runat=“server”?而不是何时在ASP.NET中使用runat=“server”。 - Somnath Kharat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接