为什么ASP.Net服务器控件声明需要runat="server"属性?

5
显然,它们以"<asp:"开头被声明就足以推断它们是服务器控件了吗?还是只是为了完整性而包含在内(例如,它们看起来类似于<input runat="server"的服务器控件声明)?还是有一些特殊的原因?
当我无意中漏掉它时,编译器总是让我感到困扰。这有点像“var”的思维方式-如果编译器知道它是什么...为什么要让我声明它呢?

请查看https://dev59.com/73VC5IYBdhLWcg3wZwTj。 - Kaz
1个回答

8
这个论坛帖子中得知,Internet Explorer支持DHTML行为。[asp:control语法]不代表服务器控件。您可以创建具有名称空间的客户端DHTML组件,并在客户端计算机上运行。此外,XHTML允许使用命名空间,如果您愿意,在客户端上可以将asp名称空间用于其他用途。 Runat =“server”可防止名称空间冲突。如果元素没有runat =“server”属性,则将其原样发送到客户端浏览器。因此,您也可以在ASP.NET页面中使用HTML组件(HTC)。请参见此处此处了解更多信息。Mike Schinkel还发表了一篇博客文章,探讨了为什么需要runat = server。

我本来想将我的问题标记为重复(请参见下文),但系统不允许。你有什么想法吗? - Ray

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