我知道至少有20个问题与“ViewState MAC验证失败”有关,但我的有点独特(至少我认为是这样)
在我的母版页的代码隐藏中引入此代码之前,我的网站工作正常。
protected override void OnInit(EventArgs e)
{
Page.MaintainScrollPositionOnPostBack = true;
base.OnInit(e);
}
这显然会在回发后将页面的一部分放入视图中。添加此代码后,我的网站开始通过单击调用以下JS代码的按钮向我提供“验证ViewState MAC失败”异常。
function SelectorSubmitOld(targetUrl) {
var f = jQuery('form').get(0);
jQuery("#__VIEWSTATE").remove();
f.action = targetUrl;
f.submit();
}
一旦我评论用MasterPage代码隐藏编写的代码,一切都恢复正常。
以下我尝试过除了上面提到的(显然不是必需的)
我的问题是,我无法理解我的代码和ViewStateMAC之间的关系是什么?
如果您需要我方提供更多信息,请与我们联系。
提前致谢!!
答案 0 :(得分:1)
ASP.NET Web窗体(.aspx)页面仅用于回发给自己,而不是回发到任何其他页面。在您的情况下,您通过更改< form action>将A.aspx发布到B.aspx。提交时的参数。
通过动态更改POST URL,您尝试完成的方案是什么?也许我们可以提出一个更好的方法来做到这一点。
答案 1 :(得分:0)
从this post开始,我会尝试删除对回发位置的引用:
function SelectorSubmitOld(targetUrl) {
var f = jQuery('form').get(0);
jQuery("#__VIEWSTATE").remove();
jQuery("#__SCROLLPOSITIONX").remove();
jQuery("#__SCROLLPOSITIONY").remove();
f.action = targetUrl;
f.submit();
}