2010-02-24 43 views
6

我想知道Html控件Html控件和asp.net网页控件

和asp.net网页控件究竟有何区别。为什么我们需要这两种类型的控制?

我已经把我的网页上一个HTML输入文本,HTML按钮和asp.net文本框和ASP.NET按钮

<input id="Text1" type="text" /> 

    <input id="Button2" type="button" value="button" /> 







    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 

    <asp:Button ID="Button1" runat="server" Text="Button" /> 

当我拿查看源代码,两者都同样呈现

<input id="Text1" type="text" /> 

    <input id="Button2" type="button" value="button" /> 




    <input name="TextBox1" type="text" id="TextBox1" /> 

    <input type="submit" name="Button1" value="Button" id="Button1" /> 

网页控制优于HTML控件。

我在互联网上的一些环节,但尚不清楚究竟

他们正在使用的东西。

http://www.extremeexperts.com/Net/FAQ/DiffBetweenServerandHTMLControls.aspx

请问任何人请解释这两个控件之间的区别。

回答

1

简而言之,HTML控件在Postback时不会持续它们的状态。另一方面,ASP.Net控件为您提供了奢华,可以自动保存其状态并进行多次回传。同时使用ASP.Net控制,而不是HTML元素不同的是:由ASP.Net生成

<input type="hidden" name="__VIEWSTATE" value="dDwtNTI0ODU5MDE1Ozs+.................." />

这个隐藏域汽车,它包含了所有你的价值属性控制状态。

0

服务器控件具有runat =“server”属性,它使您能够为代码隐藏中的这些控件提供服务器端逻辑。您也可以将此属性添加到现有的HTML控件以获得相同的功能。

0

HTML控件是直接对应于HTML元素的简单控件。

ASP.NET Web Controls抽象HTML元素,并且通常提供对样式的更多控制(尽管有些人会称这为坏事)。

5

首先,如果您将工具箱中的Html控件拖放到您的设计界面上(如示例中所示),则创建的标签不包含runat =“server”。这意味着它是本地的Html标记,而不是.NET控件。没有runat =“server”的本地Html标记没有服务器端功能。因此,您无法在代码隐藏中设置“Text1”输入标记的值。其次,将runat =“server”添加到Html输入标记后,将其从本机Html标记转换为从System.Web.UI.Control派生的HtmlControl。现在这个问题可以转化为来自System.Web.UI.Control和System.Web.UI.WebControl之间的差异。然而,专门解决你的问题,让我们比较标准的输入型=“文本”控制TextBox控件:

  1. TextBox控件可以从接入代码隐藏其中输入控制不能(不容易),它也意味着您可以为TextBox控件连接服务器端事件,而无法使用标准Html控件。
  2. TextBox控件使用ViewState自动保存其值。
  3. TextBox控件可以使用Theme和.skin文件进行蒙皮处理,而本地Html控件不能。
  4. 根据TextMode属性,TextBox可以呈现为输入类型=“文本”控件或textarea。
  5. TextBox控件可以使用验证器参与验证。
  6. 最后但并非最不重要的是,如果需要,TextBox控件可以使用控件适配器在不同的浏览器中进行不同的呈现。见http://msdn.microsoft.com/en-us/magazine/cc163543.aspx

现在,所有的说法,如果你不需要任何WebControl功能,那么使用本地Html控件基本上更精简。在你的例子中,你只需将两个空白控件拖到你的设计表面上。如果这就是你所需要的,那么使用.NET控件将会过度。但是,当你开始添加自动完成和服务器端事件等时,浏览器的全部内容,Javascript和所有内容都要大得多。