客户端生成的控件是否会影响ViewState?

时间:2017-03-14 23:59:33

标签: asp.net vb.net viewstate

我有一个页面可以使用JavaScript生成新文本inputscheckboxesselects。因此,这些控件都没有runat="server"设置。

我想知道这些控件是否在PostBack上发送到服务器并成为Viewstate的一部分,以任何方式改变它。

1 个答案:

答案 0 :(得分:0)

简短的回答是是,通过作业

ASPX页面中动态生成的纯HTML元素将被视为LiteralControl元素而不是WebControl元素,因此它们不会像某些ASP .NET服务器控件那样直接影响ViewState。但是,由于它们位于form标记内(通常带有runat="server"属性),因此它们的值会一起发布为通过提交表单触发的回发事件阶段,该表单在{{中标识为键值对3}}集合(键由文字HTML元素的name属性识别)。

假设您使用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参考:

Request.Form

相关问题:

Understanding ASP.NET View State

How to viewstate in normal HTML input in asp.net

Which controls have ViewState maintained?