Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为弹出式提交启用视图状态_C#_.net - Fatal编程技术网

C# 如何为弹出式提交启用视图状态

C# 如何为弹出式提交启用视图状态,c#,.net,C#,.net,我有一个弹出窗口(一个用户控件),希望在提交时在其上添加视图状态。我为用户控件启用了视图状态,但仍然没有将视图状态附加到提交请求中 我注意到弹出窗口不存在于表单标签中。我无法找到任何解决方案将其放入表单标记中,因为表单标记是父控件,父控件具有打开该弹出窗口的链接 提交请求如下所示: 表格数据: 日期:2019年4月29日 电邮:abcd@jmail.com.com 个人信息:我的课程提醒 在其他页面中,formdata如下所示: 表格数据: 日期:2019年4月29日 Firstname:测试名

我有一个弹出窗口(一个用户控件),希望在提交时在其上添加视图状态。我为用户控件启用了视图状态,但仍然没有将视图状态附加到提交请求中

我注意到弹出窗口不存在于表单标签中。我无法找到任何解决方案将其放入表单标记中,因为表单标记是父控件,父控件具有打开该弹出窗口的链接

提交请求如下所示: 表格数据: 日期:2019年4月29日 电邮:abcd@jmail.com.com 个人信息:我的课程提醒

在其他页面中,formdata如下所示:

表格数据: 日期:2019年4月29日 Firstname:测试名称 电话号码:582374674
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