Web控件与Html控件。在Web表单应用程序中使用它们的缺点和优点

时间:2009-08-23 13:50:04

标签: asp.net webforms

在Web表单应用程序中,对于服务器代码,何时使用WebControls以及何时使用HtmlControls?例如,如果我想在span标签内写一些文本,我应该使用:

<span id="someid" runat="server"></span>

<asp:Label id="someid" runat="server"></asp:Label>

3 个答案:

答案 0 :(得分:7)

主要区别在于HtmlControls仅提供在页面循环期间寻址页面的一部分的方法,而WebControls是有状态的。

在您的示例中,如果您为Label文本指定了一些值,它将在PostBacks中保留它。

根据我的经验,如果可以的话,使用HtmlControl会好得多,它们更轻量级并且不会填满你的ViewState。当您需要WebControl为有状态时,请使用它们。

例如,您可能希望对页面标题使用Label,因为您只能分配一次值(通常在Page_OnLoad块内的if (!IsPostBack)中)。您可能希望使用HTML范围来提供一些状态反馈(例如,在每次回发时更新状态)。

答案 1 :(得分:1)

我会使用span方法。无论您使用哪种服务器控件,它最终都会呈现为html控件。 如果您的功能可以使用html控件完成更好地使用.. 对于像数据网格这样的服务器控件,您可能需要编写更多代码才能通过使用html表来实现这些功能。 在这种情况下,您可以使用服务器控件。

答案 2 :(得分:-3)

asp:button的一个行为是它总是呈现为输入类型=提交 和asp:imagebutton始终呈现为输入类型=图像