【发布时间】:2014-09-02 07:02:46
【问题描述】:
VS2010/.net4/MVC3(MVC4也有同样的问题)
我正在尝试在我的项目中调用 AJAX 函数
@Ajax.ActionLink("Display ALL Cbms results", "All" , "Cbms", new AjaxOptions()
{
HttpMethod = "GET",
UpdateTargetId = "divCbms",
InsertionMode = InsertionMode.Replace
})
控制器代码
public PartialViewResult All()
{
List<cbms> model = cbms.GetAllCBMSData();
return PartialView("_Cbms", model);
}
但不是替换目标 div,而是加载了一个全新的页面。
我在 _layout 页面中引用了不显眼的脚本
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
我尝试了这里提供的许多解决方案,但似乎没有一个有效。 其中:
将 jquery 脚本更新到最新版本(1.11.1,因为我需要向后兼容旧的 IE 浏览器)
-
解决方法如下:
<appSettings> <add key="webpages:Version" value="1.0.0.0" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> -
将 HttpMethod 类型更改为:
@Ajax.ActionLink("<text here>", "All" , "<view name here>", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "<div name here>", InsertionMode = InsertionMode.Replace })
我真的不知道如何解决这个问题,我也尝试过创建一个全新的项目(在 MVC4 中),但这给出了同样的问题。
对请求的检查会返回以下结果: Ajax request details
网络检查返回以下结果: Ajax network header
浏览提供的 URL ("http://localhost:58339/Cbms/All?X-Requested-With=XMLHttpRequest") 没有问题。但这不是我想要的格式,因此不能解决我的问题。
【问题讨论】:
-
你的控制器动作是否命中???
-
新页面正在显示,上面有数据,所以必须点击控制器,是的。但是,我希望它更新 div 部分,而不是显示新页面。
-
只需在正文标记的末尾或布局页面的页脚中提供'jquery.unobtrusive-ajax.js' js 文件的引用..
-
在页脚(也在页眉或正文中)添加“jquery.unobtrusive-ajax.js”的引用会导致链接不再起作用??
-
只包含一次
标签: jquery ajax asp.net-mvc-3