gpt4 book ai didi

asp.net - 为什么皮肤文件中的控件需要 runat ="server"?

转载 作者:行者123 更新时间:2023-12-02 14:34:27 25 4
gpt4 key购买 nike

就像标题所说..为什么?

我知道为什么普通 ASP.NET 控件需要它,对此有很多问题。

但是由于您只能在外观文件中定义 .NET 控件(没有正常的 HTML 标记),为什么外观文件中的每个控件仍然需要 runat="server"

它与样式或主题无关。我仍然需要将其添加到皮肤文件中的所有控件中吗?有谁知道“幕后”发生了什么?

最佳答案

同样,您必须了解服务器端语言的工作原理。

在呈现页面之前,服务器端预处理器会将所有 ASP.NET 标记转换为浏览器可理解的 HTML(例如,浏览器不知道 是什么)。这意味着 ASP.NET 提供的所有控件/模块/任何东西(不仅仅是 HTML)都需要具有这些属性。

我敢说预处理器最初是为了根据该属性的存在来了解它需要进行操作的内容。否则,即使什么都不做,它也必须处理每个标签。它可以被编写为仅查找 namespace ,但这需要额外的处理。

一个skin file是一个特殊的 ASP.NET 概念,用于框架内定义的标记。因此,这些标签必须具有“runat=server”是有意义的。 MS 可以在他们的预处理器中写入一个特殊的规则,例如“如果它是一个皮肤文件,则假设它都是 ASP 标签”……但这样的规则确实无法扩展。另外,它们是糟糕的文档。

作为一名 Web 开发人员,您应该了解哪些标签实际上是 HTML,哪些是框架提供的便利标签。 “runat=server” 属性使该描述变得明确。

您可以将 runat="server"添加到纯 HTML 标记(例如 <input>),但通常没有什么理由这样做,而且这是一个不好的做法。

为了提高可移植性,您可能需要考虑放弃皮肤文件并利用 CSS。属性对于设置样式非常冗长,这使得最终呈现的页面更大(加载时间更长,提供较差的用户体验)并且缺乏语义。

关于asp.net - 为什么皮肤文件中的控件需要 runat ="server"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com