Javascript Html.AntiForgeryToken()正在破坏分页行为

Javascript Html.AntiForgeryToken()正在破坏分页行为,javascript,jquery,asp.net-mvc-4,antiforgerytoken,Javascript,Jquery,Asp.net Mvc 4,Antiforgerytoken,上下文 我们的web应用程序有一个功能,例如“创建员工”。它显示三个页面(第1页,共n页),允许用户在每个页面上输入相关信息。在第3页,保存按钮允许用户保存员工。如果用户在第1页的字段中输入了不正确的值(服务器只能验证),并且服务器报告了错误,则默认行为是显示第1页,顶部显示错误消息,相关字段标记为红色 问题陈述 在最近的几次构建显示出破坏性行为之前,上述所有功能都正常工作。在上述场景中,出现错误时,将显示第2页而不是第1页。其他一切正常,如错误消息正确,第1页的字段标记为红色 分析 我试着研究

上下文

我们的web应用程序有一个功能,例如“创建员工”。它显示三个页面(第1页,共n页),允许用户在每个页面上输入相关信息。在第3页,保存按钮允许用户保存员工。如果用户在第1页的字段中输入了不正确的值(服务器只能验证),并且服务器报告了错误,则默认行为是显示第1页,顶部显示错误消息,相关字段标记为红色

问题陈述

在最近的几次构建显示出破坏性行为之前,上述所有功能都正常工作。在上述场景中,出现错误时,将显示第2页而不是第1页。其他一切正常,如错误消息正确,第1页的字段标记为红色

分析

我试着研究java脚本中的分页逻辑,然后恢复到版本更改。我还尝试了提出的解决方案。我还清除了浏览器缓存并重新打开它

什么都没用

然后我发现UI代码库中的主要变化是AntiForgeryToken()的引入。我从页面和控制器中删除了它,一切都恢复了正常。我检查了AntiForgeryToken()未引发异常

问题

  • 我不确定AntiForgeryToken()如何影响java脚本中的分页代码
  • 我可以试着了解更多关于根本原因的信息吗
  • 记住,任何提议的解决方案都离不开AntiForgeryToken()

  • 提前感谢。

    以防万一,它会帮助像我这样的Java脚本/JQuery新手

    Java脚本中的分页逻辑根据通过JQuery的index()方法计算的索引选择要显示的页面,并考虑表单元素的数量

    由于AntiForgeryToken()添加了一个隐藏的表单元素,索引被错误地计算为1而不是0(对于第1页)。这就是AntiForgeryToken()所扮演的角色

    解决方案是将分页组标识符传递给索引()方法,因此它不考虑任何其他只属于分页的元素。

    就这样


    从这个问题中学习,在使用JQuery或任何其他JS库查找HTML元素时,一定要更加具体。JQuery确实提供了方法,但不幸的是,由于之前的工作正常,原始作者没有利用Index()方法的强大功能。

    这个问题似乎过于本地化了。请把你的问题改为一般问题。@Ramesh,对不起,我没听清楚。我可以要求您更具体地了解问题所需的详细信息。我很高兴添加更多细节,如果这有助于你理解这个问题。这个问题不会帮助人们访问这个网站。您没有共享分页逻辑。你不确定根本原因。在一般情况下,我们可以提供帮助。但在这种情况下,它非常局限于您的逻辑和代码。@Ramesh-是的,您是正确的,我不确定根本原因,这就是为什么我在这里发表文章,希望有人能给我指出正确的方向,找到根本原因并最终找到正确的解决方案。您是否怀疑分页逻辑(这是一大块代码)可能是罪魁祸首?那么,为什么删除AntoForgeryToken会使这个问题消失呢?如果您的分页逻辑在客户端,那么应该会有什么东西触发它移动到第2页。我建议您在开发人员工具(如chrome的/firebug)中放置一个断点,看看是谁在调用脚本。mvc的反伪造验证和定制分页逻辑之间没有关系,除非您的实现做了一些特殊的事情。我上面提到的方法可能会有所帮助。