客户端生成的控件可以影响ViewState



我有一个页面,该页面使用JavaScript生成新的文本inputscheckboxesselects。因此,这些控件都没有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

最新更新