Ajax.BeginForm()不能异步工作

时间:2015-08-23 14:28:00

标签: javascript jquery asp.net ajax asp.net-mvc

我正在尝试学习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天,但我无处可去。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

确保jquery.unobtrusive-ajax.js文件夹中存在Scripts脚本,并在<script>标记中提取。

如果不确定您已在项目中安装了Microsoft.jQuery.Unobtrusive.Ajax NuGet,则会将此脚本添加到您应用程序的Scripts文件夹中。

我注意到在使用Visual Studio 2015创建新的ASP.NET MVC应用程序时,此脚本不是开箱即用的,我必须安装此NuGet才能使其可用。我不知道在最新的MVC版本中删除此脚本的原因 - 也许它已被弃用,现在还有另一种方法可以实现这一点,但是我已经做了一些MVC开发并且我已经很长时间了确定现在推荐的方式是什么。