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

时间:2009-07-17 14:50:49

标签: asp.net compiler-construction servercontrols runatserver

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

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

1 个答案:

答案 0 :(得分:8)

取自this forum thread

  

Internet Explorer支持DHTML   行为。

     

[asp:control语法]并不意味着服务器   控制。您可以创建客户端DHTML   具有命名空间和意志的组件   在客户端计算机上运行。也,   XHTML中允许使用名称空间   技术上你可以使用asp命名空间   对于客户端上的其他内容,如果您   希望。 Runat =“server”阻止   命名空间冲突。如果元素没有   runat =“server”属性,它将是   发送到客户端浏览器不变。   因此,您可以使用HTML组件   (HTC)也在ASP.NET页面中。

     

看看这里

     

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

Mike Schinkel还has a blog post探索了为什么runat = server是必要的。