何时在普通HTML上使用runat =“server”

时间:2012-07-12 20:28:43

标签: asp.net html webforms

在标准HTML元素而不是真正的ASP.NET控件上使用runat =“server”是否合适?我可以完全控制设置普通元素的html /文本,那么为什么我不使用它而不是“笨重”的ASP.NET WebForms控件呢?

如果一个人比另一个好,我想知道一些兴趣点:

  • 效果差异
  • 功能差异
  • 其他差异不是那么明显?

示例差异:

<asp:Literal ID="mySpecialHtml" runat="server" />

<div id="mySpecialHtml" runat="server" />

5 个答案:

答案 0 :(得分:18)

两者都是ASP.NET服务器控件。与HTML元素对应的对象位于System.Web.UI.HtmlControls命名空间中,Web控件位于System.Web.UI.WebControls命名空间中。

HTML控件更轻量级,与HTML元素完全对应,而Web控件具有更多功能,可以根据浏览器功能和控件设置呈现为不同的HTML元素。

HTML控件呈现为单个HTML元素,而Web控件呈现为零个或多个HTML元素。例如,Literal控件不会呈现为元素,只会输出其文本。还有其他控件不会自行呈现任何元素,例如RepeaterPlaceHolder控件。另一方面,CheckBoxList控件例如呈现为多个HTML元素,table作为容器,以及其中每个复选框的input元素。

使用不同元素呈现的控件示例是TextBox控件,它将作为inputtextarea元素呈现,具体取决于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控件。