MVC5 Ajax PartialView

时间:2014-07-31 07:05:23

标签: jquery ajax asp.net-mvc-5 partial-views unobtrusive-validation

我需要使用Ajax.BeginForm使用PartialView刷新div。 我在MVC4中已经完成了十几次这样做,它完美无缺。在MVC5中,它并不起作用:(

以下是我采取的步骤:

  • 在Visual Studio 2013中创建一个新项目“PartialAjax”(ASP.NET Web应用程序/ MVC)
  • 右键单击Views / Home并添加视图>选中“创建为部分视图”>将其命名为“_Test”
  • 此_Test.cshtml视图的代码:

    <p>From now on I'm gonna change my life: @DateTime.Now.ToString()</p>
    
  • 编辑Views / Home / Index.cshtml视图:

    @{
                ViewBag.Title = "Home Page";
    }
    @using (Ajax.BeginForm("ChangeLife", "Home", null, new AjaxOptions() { UpdateTargetId = "test", HttpMethod = "Post" }, null))
    {
        <input type="submit" value="Start" />
    }
    
    <div id="test">
        @Html.Partial("_Test")
    </div>
    
  • 将它放在你的HomeController中:

    public ActionResult ChangeLife()
          {
              return this.PartialView("_Test");
          }
    

如果单击Manage NuGet packages,默认情况下会安装jQuery和Microsoft jQuery Unobtrusive Validation。

1 个答案:

答案 0 :(得分:6)

我必须安装Microsoft jQuery Unobtrusive Ajax并为jqueryval呈现javascript包(现有但未呈现),并为unobtrusive.ajax脚本文件添加了一个新包。

BundleConfig类中的新包:

bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
                    "~/Scripts/jquery.unobtrusive*"));

为_Layout.cshtml中的两个包添加了渲染方法(在jquery渲染下面):

@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryajax")