Ajax.ActionLink调用控制器两次

时间:2011-06-05 17:00:57

标签: 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()"

                         }) 

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

   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);

        }
    }

5 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:3)

只使用一个js而不是两个

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>

它将解决您的问题。

答案 2 :(得分:1)

答案 3 :(得分:0)

答案 4 :(得分:0)

只需检查此jquery参考

src="~/Scripts/jquery.unobtrusive-ajax.min.js"

可能是您在视图中添加两次 或

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",