我喜欢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吗?
当您想要更多地控制最终由页面发出的标记时,将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或完全不同的标记集时,这似乎更有价值.