2011-07-12 25 views

回答

1

瀏覽器(客戶端)將使用form標記定義的input元素中的所有值都取出,並在提交該表單時將它們發送到服務器。添加runat="server"不會直接影響客戶端(儘管它可能會改變ASP.NET生成的HTML),但它允許(除其他外)ASP.NET更容易處理該控件。例如,當設置了runat="server"時,您可以從代碼(頁面中或代碼隱藏)中設置控件值,使其不可見等。

詳情參見MSDN的文章(特別是HTML控件部分): http://msdn.microsoft.com/en-us/library/ms973868.aspx

+0

U可以看到上面呈現的html,當你看到下面提交的表單數據時,有一個丟失的輸入(位置)控制數據發送到服務器。 __EVENTTARGET: __EVENTARGUMENT: __VIEWSTATE:/ wEPDwUJMzY3MTcyMDIyZGQUNyhFP9fIhqreDHMyXVTQ5L878sZ3WfF JrCMKRZbeQ == __EVENTVALIDATION:/ wEWBgLbrLviDwKM54rGBgLs0bLrBgKw45C8AQK84/y8AQL3jKLTDeKnD8GEDrn9unyF9wmZBVF/QVSeKAcE1Kv2QZSb1XYs Button1的:按鈕 TextBox1中: – sas

+0

嘗試增加名稱= 「位置」 到第一輸入元件或將其設置爲一個值提交表單之前。你看到了價值嗎? – rsbarro

+0

是的,它在formdata中發佈。這是否意味着瀏覽器僅在輸入元素包含「name」屬性時發佈數據。如果是這樣,爲什由於這是HTML規範的一部分,因此@sas: – sas

1

rsbarro是正確的(我upvoted他),但他的回答可能是一個有點混亂。

runat="server"不會以任何方式影響瀏覽器。它仍然會看到輸入,選擇和其他標準HTML控件是否使用.Net的控件生成,或者將常規html標記放入標記中。瀏覽器將所有表單數據發佈到可通過Request.Form [「tagname」]或Request [「tagname」]訪問的「表單」集合中。現在在asp.net中,頁面生命週期的一部分將檢查那些runat =「server」標記的標記。如果它找到它們,那麼它會告訴控件從Request.Form集合中加載它的值。如果HTML控件沒有runat =「server」,那麼它不被視爲服務器控件,訪問所發佈值的唯一方法是通過Request.Form [「tagname」]。

還有更多,請參閱rsbarro的鏈接。

希望這會有所幫助。