何时使用HtmlControls与WebControls

时间:2020-03-05 18:51:56  来源:igfitidea点击:

我喜欢HtmlControls,因为没有发生HTML魔术……asp源代码看起来与客户端看到的内容相似。

我无法与GridView,Repeater,CheckBoxLists等实用程序争论,因此在需要该功能时会使用它们。

另外,混合和匹配的代码看起来很奇怪:

<asp:Button id='btnOK' runat='server' Text='OK' />
<input id='btnCancel' runat='server' type='button' value='Cancel' />

(在上述情况下,如果我们要将服务器端事件侦听器绑定到"确定",但"取消"仅运行隐藏了当前div的JavaScript)

那里有一些权威的风格指南吗?是否应避免使用HtmlControls?

解决方案

回答

好吧...如果我们不需要在服务器上执行任何操作,则不会使用html控件。我会做

<input id='btnCancel' type='button' value='Cancel' />

鳍。

回答

以我的经验,几乎没有什么区别。正如Darren所说,如果我们不需要服务器端功能,则HTML控件的影响可能较小。

并且不要忘记,只需将runat =" server"指令和一个ID添加到其中,就可以将服务器端功能添加到几乎所有HTML控件上。

回答

当我们想要对最终导致页面发出的标记进行更多控制时,将HTML控件视为一个选项可能会很有用。从某种意义上说,我们希望每个浏览器都能看到完全相同的标记,从而实现了更多控制。

如果创建System.Web.UI.HtmlControls像这样:

<input id='btnCancel' runat='server' type='button' value='Cancel' />

然后,我们知道将发出哪种代码。即使大部分时间:

<asp:Button id='btnCancel' runat='server' Text='Cancel' />

最终将成为相同的标记。并非总是为所有WebControl发出相同的标记。许多WebControl都内置了自适应呈现功能,可以根据浏览器用户代理呈现不同的HTML。例如,DataGrid在移动浏览器中的外观将与在桌面浏览器中的外观完全不同。

与HtmlControls相比,使用WebControls还可以让我们利用ASP.NET v2.0 ControlAdapters,我相信它仅可与WebControls一起使用,这将使我们能够对已发出的标记进行程序化的配置驱动控制。

当我们考虑某些移动浏览器或者WebTV想要WML或者完全不同的标记集时,这似乎更有价值。