何时使用HtmlControls与WebControls

时间:2008-09-11 23:53:28

标签: 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' />

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

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

4 个答案:

答案 0 :(得分:5)

当您希望更多地控制最终由您的页面发出的标记时,将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看起来与在桌面浏览器中看起来完全不同。

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

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

答案 1 :(得分:3)

根据我的经验,差别很小。正如Darren所说,如果您不需要服务器端功能,HTML控件可能影响较小。

不要忘记,只需添加一个runat =“server”指令和一个ID,就可以将服务器端功能固定在几乎任何HTML控件上。

答案 2 :(得分:1)

好吧......如果你不需要在服务器上做任何事情,我就不会使用html控件。我会做的

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

鳍。

答案 3 :(得分:0)

通过添加runat =“server”,您可以访问服务器端的任何HTML控件。 我相信与ASP.NET服务器控件相比,HTML控件的重量较轻..