当我点击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);
}
}
答案 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)
确保您已将jquery不显眼的脚本包含在您的页面中(除了jquery):
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
并且您已在web.config中启用了不显眼的javascript
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
另外为了进一步诊断这些问题,我建议你使用一些工具,它可以让你准确地看到在HTTP级别发生的事情。 FireBug对于这种分析来说非常出色。它还会显示您可能遇到的任何可能的javascript错误,它将显示或不显示AJAX请求,这些请求将为您提供有关执行AJAX请求或正常请求的进一步信息,......有用的东西。
答案 4 :(得分:0)
只需检查此jquery参考
src="~/Scripts/jquery.unobtrusive-ajax.min.js"
可能是您在视图中添加两次 或
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",