Ajax.ActionLink调用控制器两次

mar*_*ery 12 asp.net ajax asp.net-mvc-3

当我点击Ajax.ActionLink时,它会调用我的控制器两次.

<td id = @tdTag>
   @Ajax.ActionLink("LL-" + item.getProjectAbbreviation(item.projectID.Value) + "-" + item.prjLessonID, "Details",
                    new { id = item.lessonID },
                    new AjaxOptions
                        {
                          HttpMethod = "POST",
                          UpdateTargetId = "details",
                          InsertionMode = InsertionMode.InsertAfter ,
                          OnSuccess = "showDetails()"

                         }) 
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像这样......

   public ActionResult Details(int id)
    {
        using (LLDataContext storeDB = new LLDataContext())
        {
            var lesson = (from l in storeDB.lessons
                          where l.lessonID == id
                          select l).SingleOrDefault();

            return PartialView(lesson);

        }
    }
Run Code Online (Sandbox Code Playgroud)

小智 32

我刚刚遇到同样的问题,我发现我已经加载了两次"jquery.unobtrusive-ajax.js".我删除了第二个实例,一切运行良好.要查看此操作,只需添加三次,然后使用Confirm AjaxOption创建一个@ Ajax.ActionLink(...).您将多次获得确认.

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 0

确保您已将 jquery unobtrusive 脚本包含到您的页面中(除了 jquery 之外):

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

并且您已在 web.config 中启用了不显眼的 javascript

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)

另外,为了进一步诊断此类问题,我建议您使用一些工具,它可以让您准确了解 HTTP 级别发生的情况。FireBug对于此类分析非常出色。它还会显示您可能遇到的任何可能的 javascript 错误,它会显示或不显示 AJAX 请求,这将为您提供更多信息,无论是执行 AJAX 请求还是正常请求,...有用的东西。