使用JQuery向表单中添加元素会导致提交时出现“无法解密反伪造令牌”错误

时间:2019-12-29 09:15:05

标签: jquery asp.net-mvc antiforgerytoken

我有一个MVC App,它的常规格式包括@Html.AntiForgeryToken(),但是我有一个javascript函数,它使用JQuery .append()调用将元素添加到表单中,正在使用此函数在其中包含元素在表单中应作为hiddenfor()元素使用,值应在提交时序列化为相应的Post Controller方法,

,如下所述:

$('#DivHiddenAccountsSub').append("<input id=\"LstAccountsSubDisplay_" + objAccountSub.ID + "__ActId\" name=\"LstAccountsSubDisplay[" + objAccountSub.ID + "].ActId\" type=\"hidden\" value=\"" + objAccountSub.ActId + "\" />");

但是,当我按下“提交”按钮时,出现以下错误: “防伪令牌无法解密。如果此应用程序由Web场或群集托管,请确保所有计算机都运行相同版本的ASP.NET Web页,并且确保配置指定了显式的加密和验证密钥。自动生成不能在群集中使用

注意:上面列出的代码在替换objAccountSub.ID之后应类似于:<input id="LstAccountsSubDisplay_0__ActId" name="LstAccountsSubDisplay[0].ActId" type="hidden" value="01001" />

如何在不破坏AntiForgeryToken()值的情况下将元素追加到表单?

1 个答案:

答案 0 :(得分:0)

首先尝试创建元素,然后将其添加为以下内容:

 $('#DivHiddenAccountsSub').append($("<input id=\"LstAccountsSubDisplay_" + objAccountSub.ID + "__ActId\" name=\"LstAccountsSubDisplay[" + objAccountSub.ID + "].ActId\" type=\"hidden\" value=\"" + objAccountSub.ActId + "\" />"));