Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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#_Forms_Asp.net Core - Fatal编程技术网

C# 为什么表单字段条目在提交后会消失?

C# 为什么表单字段条目在提交后会消失?,c#,forms,asp.net-core,C#,Forms,Asp.net Core,我有一个用户提交的表单。出于某种原因,在我们的生产环境中,当他们单击提交时,表单会被清除,他们在单击提交时会丢失所有填写的内容。我对此已经迷茫了一段时间,所以任何意见都会很有帮助 我在多个浏览器上进行了尝试,每个浏览器(Chrome、Safari)都会出现这种情况 第一个操作为表单创建视图模型,第二个操作获取该数据/模型并提交应用程序: [Authorize(Roles = "Applicant")] public IActionResult Application() { var v

我有一个用户提交的表单。出于某种原因,在我们的生产环境中,当他们单击提交时,表单会被清除,他们在单击提交时会丢失所有填写的内容。我对此已经迷茫了一段时间,所以任何意见都会很有帮助

我在多个浏览器上进行了尝试,每个浏览器(Chrome、Safari)都会出现这种情况

第一个操作为表单创建视图模型,第二个操作获取该数据/模型并提交应用程序:

[Authorize(Roles = "Applicant")]
public IActionResult Application()
{

    var vm = _applicantManager.GetApplicationViewModel(CurrentUser.UserName);

    return View(vm);
}

[HttpPost]
//[ValidateAntiForgeryToken]
[Authorize(Roles = "Applicant")]
public IActionResult Application(ApplicationViewModel model)
{

    var saved = false;

    model = _applicantManager.RebuildApplicationViewModel(model);


    if (ModelState.IsValid)
    {
        saved = _applicantManager.SubmitApplication(model, CurrentUser.UserName);

        return RedirectToAction("Index");
    }


    return View(model);
}
我在想,如果我删除
ValidateAntiForgeryToken
,也许这会解决问题,但我不确定

第一次行动是否可能需要路线?在测试时,当我在本地环境上单击submit时,它会转到带有
HttpPost
属性的操作

注意:这是生产服务器上的问题,在本地服务器上不会发生。这使我相信可能需要更改IIS设置

页面上的JavaScript:

<script>
    require(['jquery', 'jqueryui'], function($, jqueryui) {

    $(function() {


        $("#preHealthAreaDiv input:radio").click(function () {

            var selectedVal = $("#preHealthAreaDiv input:radio:checked").val();

            if (selectedVal == "Yes") {
                $("#preHealthAreaDetail").show();
            }
            else {
                $("#preHealthAreaDetail").hide();
            }
        })

    });
});

</script>

require(['jquery','jqueryui'],函数($,jqueryui){
$(函数(){
$(“#预处理读取输入:收音机”)。单击(函数(){
var selectedVal=$(“#preHealthAreaDiv输入:收音机:已选中”).val();
如果(selectedVal==“是”){
$(“#preHealthAreaDetail”).show();
}
否则{
$(“#preHealthAreaDetail”).hide();
}
})
});
});

听起来像是它的前端相关。尝试禁用JS并发布表单,看看是否会遇到同样的问题。如果没有,那么你知道它与JS有关。表单的默认操作是导航,其他任何操作都是自定义行为。您希望表单仍然填充,这表明您有一些脚本覆盖默认行为。我从这里开始。@KieranDevlin我只有一块JS,真的有可能是它导致了这个。。。?我把JS放在了问题中。@KieranDevlin如果我禁用JS,它似乎不允许我使用页面上的“下一步”按钮,而且我无法使用“提交”按钮。