我有一個頁面,生成新的文本輸入,複選框,用javascript選擇。所以這些都沒有runat =「服務器」。客戶端生成的控件是否可以影響ViewState?
我想知道,如果這些控件發送到發的服務器,成爲視圖狀態改變的一部分,無論如何。
我有一個頁面,生成新的文本輸入,複選框,用javascript選擇。所以這些都沒有runat =「服務器」。客戶端生成的控件是否可以影響ViewState?
我想知道,如果這些控件發送到發的服務器,成爲視圖狀態改變的一部分,無論如何。
簡短的回答是肯定的,通過分配。
在ASPX頁動態生成純的HTML元素將被視爲LiteralControl元素,而不是WebControl元件,因此它們不直接影響ViewState
像一些ASP .NET服務器控件。然而,由於他們放在裏面form
標籤(通常runat="server"
屬性),它們的值都貼在一起,通過提交表單,其中認定爲鍵值對在Request.Form採集觸發回發事件階段(關鍵是name屬性的認可的文字HTML元素)。
假設你已經動態生成的文本框,JS是這樣的:
<input name="FirstName" type="text" />
然後你就可以使用Request.Form
檢索其值:
If Not String.IsNullOrEmpty(Request.Form("FirstName")) Then
Dim firstName As String = Request.Form("FirstName")
而且,很重要的一點,你可以省略字符串上面的賦值和分配文本框值爲ViewState
:
ViewState("FirstName") = Request.Form("FirstName").ToString()
請注意,只有HTML服務器控件(例如<input runat="server" />
)和ASP .NET服務器控件具有控制名在直接訪問代碼隱藏和ViewState
自動維護(除非具有EnableViewState
屬性設置爲false
)。
附加ViewState
參考:
Understanding ASP.NET View State
相關的問題:
How to viewstate in normal HTML input in asp.net
如果其中一個控件(asp:TextBox)被js禁用,並且表單在Postback上發送,會影響視圖狀態嗎? – chepe263
在JS客戶端禁用控件當然不會影響服務器端部分,只要它具有名稱/ ID屬性,就可以使用Request.Form(用於HTML文字控件)或controlID.Value '(對於HTML和ASP.NET服務器控制)並可能影響'ViewState'。 –