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

Ray*_*Ray 5 asp.net compiler-construction servercontrols runatserver

当然,他们被宣布以"<asp:"开头的事实足以推断他们是服务器控件吗?或者只是为了完整而包含它(因此它们看起来类似于<input runat ="server"的服务器控制声明).还是有一些特殊原因?

它总是让我感到困惑,编译器告诉我,当我不小心这样做时,我已经错过了它.有点像"var"背后的想法 - 如果编译器知道它是什么..为什么要求我说出来呢?

Mat*_*nes 8

摘自此论坛帖子:

Internet Explorer支持DHTML行为.

[asp:control语法]并不意味着服务器控制.您可以创建具有命名空间的客户端DHTML组件,并将在客户端计算机上运行.此外,在XHTML中允许使用名称空间,如果您愿意,可以在客户端上使用asp名称空间作为其他内容.Runat ="server"可防止命名空间冲突.如果element没有runat ="server"属性,它将不加改变地发送到客户端浏览器.因此,您也可以在ASP.NET页面中使用HTML组件(HTC).

看看这里

http://msdn.microsoft.com/workshop/author/behaviors/howto/creating.asp http://msdn.microsoft.com/workshop/author/behaviors/overview.asp

Mike Schinkel还有一篇博客文章,探讨为什么runat = server是必要的.