小编典典

为什么 ASP.NET 网络表单需要 Runat="Server" 属性?

all

为什么我必须runat="server"在我的所有 ASP.NET 控件上指定它是一个强制属性,并且server是我对 ASP.NET
知识有限的唯一可用选项,如果我不使用它会出现错误?

我确实知道我可以选择在我的 HTML 标记上使用它,并且我确实了解客户端/服务器范例及其实际指定的内容。

它是作为 ASP.NET 控件的控件可能只是暗示的冗余标记,还是有潜在的原因?


阅读 66

收藏
2022-06-27

共1个答案

小编典典

我一直认为,您可以混合使用 ASP.NET 标记和 HTML 标记,而 HTML
标记可以选择存在runat="server"或不存在。将标签留在其中并不会造成任何伤害,并且会导致编译器错误将其取出。你对 Web
语言的暗示越多,一个初露头角的程序员就越不容易进入并学习它。这与任何关于标签属性的详细理由一样好。

这段对话是在 Mike Schinkel
博客上,他和
Microsoft National Services 的 Talbot Crowell 之间进行的。相关信息如下(由于来源中的语法错误而改写了第一段):

[…] 但更重要的<runat="server">是一致性和可扩展性。

<asp: />如果开发人员必须为 ASP.NET 引擎标记一些标签(即. 通过要求该<runat="server">属性,这被否定了。

它继续:

如果<runat=client>所有客户端标签都需要,则解析器将需要解析所有标签并删除该<runat=client>部分。

他继续:

目前,如果我的猜测是正确的,解析器会简单地忽略所有文本(标签或无标签),除非它是带有 runat=server属性或“ <%”前缀或 ssi“
<...include(…) 的标签 另外,由于 ASP .NET 旨在允许将 Web 设计者 (foo.aspx) 与 Web
开发者 (foo.aspx.vb) 分离,Web 设计者可以使用自己的 Web 设计器工具来放置 HTML 和客户端
JavaScript,而无需知道关于 ASP.NET 特定的标记或属性。

2022-06-27