何时使用HtmlControls与WebControls
我喜欢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或者完全不同的标记集时,这似乎更有价值。