我有一个页面可以使用JavaScript生成新文本inputs
,checkboxes
,selects
。因此,这些控件都没有runat="server"
设置。
我想知道这些控件是否在PostBack上发送到服务器并成为Viewstate的一部分,以任何方式改变它。
答案 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
参考:
相关问题:
Understanding ASP.NET View State