C# 如何为弹出式提交启用视图状态
我有一个弹出窗口(一个用户控件),希望在提交时在其上添加视图状态。我为用户控件启用了视图状态,但仍然没有将视图状态附加到提交请求中 我注意到弹出窗口不存在于表单标签中。我无法找到任何解决方案将其放入表单标记中,因为表单标记是父控件,父控件具有打开该弹出窗口的链接 提交请求如下所示: 表格数据: 日期:2019年4月29日 电邮:abcd@jmail.com.com 个人信息:我的课程提醒 在其他页面中,formdata如下所示: 表格数据: 日期:2019年4月29日 Firstname:测试名称 电话号码:582374674C# 如何为弹出式提交启用视图状态,c#,.net,C#,.net,我有一个弹出窗口(一个用户控件),希望在提交时在其上添加视图状态。我为用户控件启用了视图状态,但仍然没有将视图状态附加到提交请求中 我注意到弹出窗口不存在于表单标签中。我无法找到任何解决方案将其放入表单标记中,因为表单标记是父控件,父控件具有打开该弹出窗口的链接 提交请求如下所示: 表格数据: 日期:2019年4月29日 电邮:abcd@jmail.com.com 个人信息:我的课程提醒 在其他页面中,formdata如下所示: 表格数据: 日期:2019年4月29日 Firstname:测试名
VIEWSTATE:asdfgfsf63564645..简短的版本是,您没有看到任何VIEWSTATE,因为正如您所说,弹出窗口不在表单标记内 ASP.NET web表单的工作方式是使用带有
runat=server
属性的表单,如下所示:
<form runat="server">
<form runat="server">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="ivjHtVx...wUmW4=" />
...other controls...
</form>
<asp:Label runat="server" Visible="True">Hello world!!</asp:Label>
包含有关页面及其控件状态的信息。如果有任何原因导致该表单被发回,则表单数据将包括该viewstate。ASP.NET通过将信息存储在页面上并让客户端再次将其发送回来来“记住”信息,这是一个技巧
例如,假设您有这样一个控件:
<form runat="server">
<form runat="server">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="ivjHtVx...wUmW4=" />
...other controls...
</form>
<asp:Label runat="server" Visible="True">Hello world!!</asp:Label>
你好,世界!!
…为了响应其他页面,您甚至设置了Visible=false
。ASP.NET将数据存储在viewstate中,以告知标签现在已隐藏。否则,当用户下次发布到页面时,它无法知道标签应该隐藏
每页只能有一个
表单。您可以添加其他表单,但隐藏的viewstate输入不在这些表单中。它只有服务器形式。因此,如果您有一个单独的表单并提交它,那么您提交的表单数据将不包括viewstate。ASP.NET不记得您更改的其他控件的任何状态,包括将数据绑定到控件之类的内容。都没了
这就是为什么当您提交另一个表单时,您会看到一组不同的表单字段,而没有viewstate
这意味着,如果您希望页面上的其他内容表现得像一个单独的表单,那就更难了。您可以使用单独的客户端代码来模拟发布表单。您可以将另一个表单创建为单独的页面,并将其作为iframe显示在另一个页面中。这样,它就可以作为一个单独的页面使用自己的服务器表单和视图状态。这也可能变得复杂
或者,您可以尝试找到一种方法,将所有这些内容合并到现有的一个服务器端表单中
这并不漂亮,但希望它至少能解释为什么您没有看到其他表单的viewstate