C# 将AntiForgeryToken添加到非Ajax表单提交
我发现了大量示例,演示了如何将C# 将AntiForgeryToken添加到非Ajax表单提交,c#,forms,post,antiforgerytoken,C#,Forms,Post,Antiforgerytoken,我发现了大量示例,演示了如何将AntiForgeryToken添加到Ajax调用POST-submit方法。正如标题所示,我需要的是提交一个表单,而不是通过ajax调用。相反,我只是使用jQuerysubmit()函数 我在razor视图文件中的内容如下(注意:我使用的是html字符串文字,因为这个特定的DOM需要在以后动态地附加到一个单独的元素): 此外,使用DOM资源管理器,我可以看到AntiForgeryToken值已正确就位: 但是,当我实际提交表单时,仍然会遇到所需的防伪表单字段“\
AntiForgeryToken
添加到Ajax
调用POST-submit方法。正如标题所示,我需要的是提交一个表单,而不是通过ajax
调用。相反,我只是使用jQuerysubmit()
函数
我在razor视图文件中的内容如下(注意:我使用的是html字符串文字,因为这个特定的DOM需要在以后动态地附加到一个单独的元素):
此外,使用DOM资源管理器,我可以看到AntiForgeryToken
值已正确就位:
但是,当我实际提交表单时,仍然会遇到所需的防伪表单字段“\uu RequestVerificationToken”不存在的错误。我查阅了其他几个问答,但似乎找不到任何可能对我的问题有所帮助的东西
我是错过了一些明显的东西还是做错了什么
编辑(解决方案)
将\uuu RequestVerificationToken
分配给name
属性将修复它:
<input type='hidden' name='__RequestVerificationToken' value='...'>
这一次被证明是“我怎么会错过那个…?!”时刻之一。虽然上述方法完全合法,但唯一的问题是\uu RequestVerificationToken
必须属于名称
属性,而不是我最初的示例中的id
。我试着发布我的表单和修复,问题现在消失了
显然,如果我能使用
表达式,这一点一开始就不会成为问题,但由于我在最初的帖子中所述的原因,这个特殊的案例需要一种非常规的方法。所以,我想这是值得注意的 对于那些需要将表单发送到Razor页面并使用OnPost()获取输入值的人来说,这是一个很好的解决方案,谢谢!
$("#exportPdfForm").submit();
<input type='hidden' name='__RequestVerificationToken' value='...'>