我正在尝试学习ASP.Net MVC,而且我无法让Ajax.BeginForm异步更新部分视图。 这是操作视图中的代码:
@using (Ajax.BeginForm(
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "restaurantList"
}))
{
<input type="search" name="searchTerm" />
<input type="submit" value="Search By Name." />
}
@Html.Partial("_Restaurants", Model)
在操作中检查ajax请求始终返回false并更新整个屏幕而不是部分视图。它看起来像这样:
if (Request.IsAjaxRequest())
{
return PartialView("_Restaurants", model);
}
return View(model);
我在BundleConfig中包含了一堆jquery脚本文件。
bundles.Add(new ScriptBundle("~/bundles/otf").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui-{version}.js",
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*",
"~/Scripts/jquery-migrate-{version}.js",));
我在项目中所有视图使用的共享布局视图中正确调用body部分结束之前的render函数
@Scripts.Render("~/bundles/otf")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
我一直试图解决这个问题2天,但我无处可去。任何帮助将不胜感激!
答案 0 :(得分:2)
确保jquery.unobtrusive-ajax.js
文件夹中存在Scripts
脚本,并在<script>
标记中提取。
如果不确定您已在项目中安装了Microsoft.jQuery.Unobtrusive.Ajax
NuGet,则会将此脚本添加到您应用程序的Scripts
文件夹中。
我注意到在使用Visual Studio 2015创建新的ASP.NET MVC应用程序时,此脚本不是开箱即用的,我必须安装此NuGet才能使其可用。我不知道在最新的MVC版本中删除此脚本的原因 - 也许它已被弃用,现在还有另一种方法可以实现这一点,但是我已经做了一些MVC开发并且我已经很长时间了确定现在推荐的方式是什么。