Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Javascript RequestVerificationToken值在使用jquery隐藏html元素后为空_Javascript_Jquery_Html_Asp.net Mvc_Antiforgerytoken - Fatal编程技术网

Javascript RequestVerificationToken值在使用jquery隐藏html元素后为空

Javascript RequestVerificationToken值在使用jquery隐藏html元素后为空,javascript,jquery,html,asp.net-mvc,antiforgerytoken,Javascript,Jquery,Html,Asp.net Mvc,Antiforgerytoken,我有一个ASP.NETMVC4表单,其中有用于显示和隐藏一些HTML元素的复选框。在访问表单页面时,RequestVerificationToken值被正确地创建为隐藏字段。默认情况下,某些HTML元素是隐藏的 然后我勾选一个复选框以显示一些HTML元素,在我取消勾选复选框(隐藏那些HTML元素)后,RequestVerificationToken值消失 因此,当我通过单击“创建”按钮提交表单时,会出现以下错误: 所需的防伪表单字段“\uu RequestVerificationToken”不存

我有一个ASP.NETMVC4表单,其中有用于显示和隐藏一些HTML元素的复选框。在访问表单页面时,RequestVerificationToken值被正确地创建为隐藏字段。默认情况下,某些HTML元素是隐藏的

然后我勾选一个复选框以显示一些HTML元素,在我取消勾选复选框(隐藏那些HTML元素)后,RequestVerificationToken值消失

因此,当我通过单击“创建”按钮提交表单时,会出现以下错误:

所需的防伪表单字段“\uu RequestVerificationToken”不存在

如果我没有取消勾选复选框,则RequestVerificationToken的值存在,并且表单提交成功

HTML元素使用jQuery/javascript隐藏显示

为什么会这样?我如何解决这个问题?在线研究错误只建议添加以下属性

我已经在Create action方法中添加了属性,但没有在GET方法中添加属性:

// POST: /Document/Create
[HttpPost]
[ValidateAntiForgeryToken]
...
在创建表单页面中,我还添加了:

@using (Html.BeginForm())
{
  @Html.AntiForgeryToken()
...
以下是显示和隐藏元素的Javascript:

$('div.section .input_control').change(function () {
var $target = $(this).closest('div').find('.showSection');
if (this.checked) {
    $target.show();

} else {
    if (confirm("Are you sure you want to exclude this section?") == true) {
        $target.hide();
        jQuery(':hidden').val('');
    } else {
        $(this).prop("checked", true);
    }
}
});
使用jQuery.not()。或

它将是这样的:

$(':hidden').not('__RequestVerificationToken').val('');

这样做,您将获得除Antifforgery字段之外的所有隐藏字段。

该元素真的是隐藏的还是被禁用的?我用复选框隐藏的元素是div。div有style=“display:none”隐藏和style=“”显示元素。这不对吗?这怎么能删除请求令牌的值?你能显示你的javascript吗?好的,我添加了JS,不知道如何在代码编辑中正确添加缩进。啊,我明白了!这是这一行:jQuery(':hidden').val('';不是吗??我试图在隐藏时删除表单字段的值以重置它们。替代方案是什么?因为它也正在删除RequestVerificationToken