何时使用HtmlControls与WebControls

Jim*_*mmy 5 asp.net

我喜欢HtmlControls,因为没有HTML魔法...... asp源看起来与客户看到的类似.

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

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

<asp:Button id='btnOK' runat='server' Text='OK' />
<input id='btnCancel' runat='server' type='button' value='Cancel' />
Run Code Online (Sandbox Code Playgroud)

(以上情况如果您想将服务器端事件侦听器绑定到OK但是Cancel只运行一个隐藏当前div的javascript)

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

Tyl*_*ler 5

当您想要更多地控制最终由页面发出的标记时,将HTML控件视为一个选项可能会很有用.在您希望每个浏览器看到完全相同的标记的意义​​上的更多控制.

如果您创建System.Web.UI.HtmlControls,如:

<input id='btnCancel' runat='server' type='button' value='Cancel' />
Run Code Online (Sandbox Code Playgroud)

然后你知道将发出什么样的代码.尽管大部分时间都是:

<asp:Button id='btnCancel' runat='server' Text='Cancel' />
Run Code Online (Sandbox Code Playgroud)

将最终成为相同的标记.并不总是为所有WebControl发出相同的标记.许多WebControl都内置了自适应渲染,它将根据浏览器用户代理呈现不同的HTML.例如,DataGrid在移动浏览器中看起来与在桌面浏览器中看起来完全不同.

使用WebControls而不是HtmlControls也可以让你利用ASP.NET v2.0 ControlAdapters,我认为它只适用于WebControls,这将允许您对发出的标记进行编程配置驱动控制.

当您考虑某些移动浏览器或WebTV需要WML或完全不同的标记集时,这似乎更有价值.