为什么我必须runat="server"在我的所有 ASP.NET 控件上指定它是一个强制属性,并且server是我对 ASP.NET 知识有限的唯一可用选项,如果我不使用它会出现错误?
runat="server"
server
我确实知道我可以选择在我的 HTML 标记上使用它,并且我确实了解客户端/服务器范例及其实际指定的内容。
它是作为 ASP.NET 控件的控件可能只是暗示的冗余标记,还是有潜在的原因?
我一直认为,您可以混合使用 ASP.NET 标记和 HTML 标记,而 HTML 标记可以选择存在runat="server"或不存在。将标签留在其中并不会造成任何伤害,并且会导致编译器错误将其取出。你对 Web 语言的暗示越多,一个初露头角的程序员就越不容易进入并学习它。这与任何关于标签属性的详细理由一样好。
这段对话是在 Mike Schinkel 的博客上,他和 Microsoft National Services 的 Talbot Crowell 之间进行的。相关信息如下(由于来源中的语法错误而改写了第一段):
[…] 但更重要的<runat="server">是一致性和可扩展性。 <asp: />如果开发人员必须为 ASP.NET 引擎标记一些标签(即. 通过要求该<runat="server">属性,这被否定了。
[…] 但更重要的<runat="server">是一致性和可扩展性。
<runat="server">
<asp: />如果开发人员必须为 ASP.NET 引擎标记一些标签(即. 通过要求该<runat="server">属性,这被否定了。
<asp: />
它继续:
如果<runat=client>所有客户端标签都需要,则解析器将需要解析所有标签并删除该<runat=client>部分。
<runat=client>
他继续:
目前,如果我的猜测是正确的,解析器会简单地忽略所有文本(标签或无标签),除非它是带有 runat=server属性或“ <%”前缀或 ssi“ <...include” (…) 的标签 另外,由于 ASP .NET 旨在允许将 Web 设计者 (foo.aspx) 与 Web 开发者 (foo.aspx.vb) 分离,Web 设计者可以使用自己的 Web 设计器工具来放置 HTML 和客户端 JavaScript,而无需知道关于 ASP.NET 特定的标记或属性。
runat=server
<%
<...include