【发布时间】:2014-03-04 15:22:15
【问题描述】:
首先让我解释一下我尝试过的所有可能的解决方案。我现在在我的脚本文件夹中有 jquery-unobtrusive-ajax.min.js 并将其添加到包中。我已经尝试在视图页面本身以及_Layout.cshtml 页面上引用它,这就是我目前拥有捆绑包的方式:
//BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.10.2.min.js",
"~/Scripts/modernizr-2.6.2.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
此捆绑包在我的所有其他视图派生自的主布局视图页面中引用:
//_Layout.cshtml (at bottom of view, right before hitting </body></html>)
@Scripts.Render("~/bundles/jquery")
最后在 web.config 中,我已将这些键添加到应用设置中:
//Web.config
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
既然已经说明了,这就是我的 Ajax 调用的样子。我正在尝试从独立页面返回一些数据并将其替换为主页中的内容,我认为这相当简单:
@Ajax.ActionLink("Edit", "Index", "WeeklyTarget",
new {id = item.WeeklyTargetId},
new AjaxOptions {HttpMethod = "GET", UpdateTargetId = "hoursEdit", InsertionMode = InsertionMode.Replace})
当从控制器调用的索引视图中单击此操作链接时:
public ActionResult Index(int? id, IEnumerable<WeeklyTarget> selection )
{
if (Request.IsAjaxRequest())
{
// return the partial view here
}
}
但正如我的标题中所述,Request.IsAjaxRequest() 仍将始终返回 false。是什么赋予了???请帮助...我已经用尽了所有我能想到的想法、调整和解决方法。我什至尝试清除我的缓存、清理解决方案等。
【问题讨论】:
-
它应该可以工作。在 chrome 或您使用的任何浏览器中。检查生成的源文件,检查是否可以在生成的html中看到
jquery.unobtrusive-ajax.min.js文件 -
确实如此,但是我注意到
jquery.unobtrusive-ajax.min.js仍然引用已弃用的jQuery 方法.live(),经过进一步研究,该方法已从jQuery 1.9 中删除。也许如果我解决了这个错误,它会起作用的......嗯
标签: jquery ajax asp.net-mvc asp.net-mvc-4 razor