Asp.net mvc 4 ViewStateException-viewstate MAC验证失败-使用Jquery Mobile的Sitefinity ASP.NET MVC
我在提交表格时,大部分时间都会遇到这个错误。我将SiteFinity6.2与ASP.NETMVC4.0和JQuery Mobile一起使用 由于我在混合模式下使用Sitefinity,所以我使用@Html.BeginFormSitefinity()命令来创建表单。在控制器上,我的操作具有[HttpPost]属性。代码总是在控制器上点击我的默认操作,没有问题。无论我在提交时在表单中输入什么,我只会在页面上收到一条错误消息…永远不会点击HttpPost操作Asp.net mvc 4 ViewStateException-viewstate MAC验证失败-使用Jquery Mobile的Sitefinity ASP.NET MVC,asp.net-mvc-4,jquery-mobile,viewstate,sitefinity,Asp.net Mvc 4,Jquery Mobile,Viewstate,Sitefinity,我在提交表格时,大部分时间都会遇到这个错误。我将SiteFinity6.2与ASP.NETMVC4.0和JQuery Mobile一起使用 由于我在混合模式下使用Sitefinity,所以我使用@Html.BeginFormSitefinity()命令来创建表单。在控制器上,我的操作具有[HttpPost]属性。代码总是在控制器上点击我的默认操作,没有问题。无论我在提交时在表单中输入什么,我只会在页面上收到一条错误消息…永远不会点击HttpPost操作 我环顾四周,有很多页面都有关于MAC失败问
我环顾四周,有很多页面都有关于MAC失败问题的修复,但没有一个对我有效。我在web.config中有一个机器密钥,我不会将enableViewStateMac设置为false,因为这是一个安全漏洞。好的,我尝试使用以下两种解决方案,但它们都非常糟糕。这就是我现在所做的,这仍然不是很好,但我有Sitefinity、MVC和JQuery Mobile都在同一个页面上,表单不再给我视图状态异常 第一件事是添加数据ajax=“false”是不够的,要使其起作用,您需要在jquerymobile启动之前禁用ajax。因此,要做到这一点,您需要在JQuery移动文件加载之前但在JQuery文件加载之后添加此脚本
$(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });
完成此操作后,我不再使用SiteFinityBegin表单,而是通过JQuery来更改主页上的表单以执行正确的操作
<script>
$("#aspnetForm").attr("action", "Home/Login");
</script>
$(“#aspnetForm”).attr(“操作”、“主页/登录”);
这意味着每次页面更改都有一个完整的页面加载,表单帖子使用我的WebForms母版页面中声明的表单
-旧答案-
事实上…我下面的东西不起作用。我是什么
目前的做法确实很难看,但通常是有效的
只要用户从主页进入站点,那么主页
页面是Jquery Mobile的第一个页面。视图状态错误,我
是因为它将当前页视为第一页
表单已提交到活动页面。如果控制器为
主页刚刚设置为处理所有HTTPPost调用?我有
从包含表单的所有视图中删除了@Html.beginformstefinity()
我只是在使用我的顶级母版页上的表格。然后我加上
视图上的代码将此窗体的操作更改为指向
主页面控制器。前
<script>
$("#aspnetForm").attr("action", "Home/Login");
</script>
$(“#aspnetForm”).attr(“操作”、“主页/登录”);
一旦我做了这个更改,表单就不会抛出视图状态
例外情况……只要主页是Jquery Mobile首页。
如果用户来自不同的页面,则所有内容都将被置乱。
还没有答案
- 真是老生常谈-
此外,请确保不要将[OutputCache(NoStore=true,Duration=0,VaryByParam=“*”)放在操作上。正在从此获取相同的视图状态异常。。。