好的,所以问题如下:我正在使用jQuery的AJAX,以便在页面内进行场景调用(对项目进行投票等事件)并更改相应元素中的内容。当我将AJAX与ASP.net的AJAX混合时,问题就出现了,更准确地说,当我在页面上使用jQuery执行操作后尝试回发时。页面的视图状态已更改,验证失败(事实上这似乎是正常的)。
我的问题是:我可以以某种方式禁用验证,以便我可以执行与chaged页面viewstate结合的回发吗?到目前为止,搜索如何禁用它没有产生任何结果。
更实际的例子是在评论页面上,我允许对评论进行投票并发布新评论。因此,如果用户投票评论然后发布他自己的评论,则页面的内容会发生变化,因此验证失败。此外,我已尝试将评论表单放在更新面板中,以防止整个页面发布,但仍然失败。
当然我可以使用备用路由并使用不同的页面来处理事件,只需通过jQuery的AJAX调用它,但我想知道我是否可以通过组合ASP.net和jQuery来实现这一点。
提前致谢。
答案 0 :(得分:1)
如果要禁用viewstate验证,可以使用Page.EnableViewStateMac = false
在页面或配置级别进行设置。
http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableviewstatemac.aspx
这不一定是个好主意,因为验证功能可以防止视图状态的篡改,你将会关闭......
如果由于jQuery ajax调用而遇到无效viewstate问题,一个选项是考虑使用Ajax控件,例如UpdatePanel
。您可以包装某些控件并将UpdatePanel
标记为有条件以确保小的往返。这不会干扰viewstate,并允许您同时继续使用viewstate验证和ajax。
有些方法可以使用jQuery ajax调用,而不会干扰viewstate验证。其他人可能会强调这种方法。