2010-02-24 82 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和所有內容都要大得多。