Eri*_*ker 3 asp.net markup skins themes runatserver
就像标题所说..为什么?
我知道为什么在正常的ASP.NET控件上需要它,关于这个问题有很多问题.
但由于您只能在外观文件中定义.NET控件(没有普通的HTML标记),为什么皮肤文件runat="server"中的每个控件仍然需要它?
它与样式或主题无关.有什么理由我仍然需要将它添加到我的皮肤文件中的所有控件?有谁知道它在幕后会发生什么?
同样,您必须了解服务器端语言的工作原理.
在呈现页面之前,服务器端预处理器将所有ASP.NET标记转换为浏览器可理解的HTML(例如,浏览器不具有<asp:button>的概念).这意味着ASP.NET提供的所有控件/模块/任何不仅仅是HTML的东西都需要具有这些属性.
我冒昧地说,预处理器最初是根据该属性的存在而知道它需要操作的.否则,即使它什么也没做,它也必须处理每个标签.它可能只是为了寻找命名空间而编写,但这需要额外的处理.
一个皮肤文件是一种特殊的ASP.NET的理念,为框架内定义的标签.因此,这些标签必须具有"runat = server"才有意义.MS可以在他们的预处理器中编写一个特殊规则,例如"如果它是一个皮肤文件,假设它是所有ASP标签"......但是这样的规则实际上不能扩展.另外,他们是糟糕的文件.
作为Web开发人员,您应该了解哪些标记实际上是HTML,哪些是框架提供的便利标记.该"runat=server"属性使该描述显式化.
你可以将runat ="server"添加到纯HTML标签,例如<input>,但通常没有什么理由,这是一个不好的做法.
为了实现可移植性,您可能需要考虑远离皮肤文件并利用CSS.设置样式的属性非常冗长,这使得最终呈现的页面更大(加载时间更长,提供差的用户体验)和非语义.
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |