在标准HTML元素而不是真正的ASP.NET控件上使用runat =“server”是否合适?我可以完全控制设置普通元素的html /文本,那么为什么我不使用它而不是“笨重”的ASP.NET WebForms控件呢?
如果一个人比另一个好,我想知道一些兴趣点:
示例差异:
<asp:Literal ID="mySpecialHtml" runat="server" />
<div id="mySpecialHtml" runat="server" />
答案 0 :(得分:18)
两者都是ASP.NET服务器控件。与HTML元素对应的对象位于System.Web.UI.HtmlControls
命名空间中,Web控件位于System.Web.UI.WebControls
命名空间中。
HTML控件更轻量级,与HTML元素完全对应,而Web控件具有更多功能,可以根据浏览器功能和控件设置呈现为不同的HTML元素。
HTML控件呈现为单个HTML元素,而Web控件呈现为零个或多个HTML元素。例如,Literal
控件不会呈现为元素,只会输出其文本。还有其他控件不会自行呈现任何元素,例如Repeater
和PlaceHolder
控件。另一方面,CheckBoxList
控件例如呈现为多个HTML元素,table
作为容器,以及其中每个复选框的input
元素。
使用不同元素呈现的控件示例是TextBox
控件,它将作为input
或textarea
元素呈现,具体取决于TextMode
} property。
Web控件具有更多功能,但也使用更多资源。它们具有更多属性并支持主题和数据绑定等内容。许多Web控件将数据放在ViewState
中,该页面作为页面的一部分发送。如果您不小心,ViewState
会变得非常大,并影响页面的加载时间。
答案 1 :(得分:11)
我使用服务器html控件的唯一原因是我需要编写自己的html的灵活性,但仍然需要在后面的代码中访问它的属性。
<div id="mySpecialHtml" runat="server" />
在代码背后:
mySpecialHtml.InnerHtml = "something else";
答案 2 :(得分:4)
ASP.NET解析器将标准html元素w / runat =“server”标记解释为html服务器控件。示例:
<a runat="server"></a>
被解释为
<asp:HtmlAnchor runat="server"></asp:HtmlAnchor>
因此,请注意,如果使用runat =“server”而不是使用相应的HTML Server控件。
此外,ASP.NET包含一组Web服务器控件,即HyperLink控件,它们提供更多功能,更多属性,事件等,但在某些情况下可能会更慢。
答案 3 :(得分:1)
我喜欢在客户端有更多工作时使用html控件,并且当服务器端有更多工作时(后面的代码)使用asp.net控件。
答案 4 :(得分:1)
我相信ASP.NET使用一组不同的Web服务器控件,这些控件通常具有更多功能,但这完全取决于您的偏好。如果你的工作主要是服务器端,我会坚持使用ASP.NET控件。