我有一个页面,该页面使用JavaScript生成新的文本inputs
,checkboxes
,selects
。因此,这些控件都没有runat="server"
集。
我想知道这些控件是否在回发中发送到服务器并成为ViewState的一部分,以任何方式对其进行更改。
简短的答案是是的,通过分配。
ASPX页面中动态生成的普通HTML元素将被视为文字综合元素,而不是WebControl元素,因此它们不会像某些ASP .NET服务器控件那样直接影响ViewState
。但是,由于将其放置在form
标签(通常带有runat="server"
属性)中,因此它们的值将作为回发事件阶段触发,通过提交表单触发,该表单在Request.Form Collection中识别为键值配对(Form Collection(键都由密钥识别)字面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服务器控件才能自动维护在Code-Behind和ViewState
中直接访问的控件名称(除非将EnableViewState
属性设置为false
)。
附加ViewState
参考:
了解ASP.NET查看状态
相关问题:
如何在asp.net中的普通html输入中查看state
哪些控件维护了视图?
HTML控制的ViewState