为什么Partial View在MVC 5 Visual Studio 13中显示为完整页面?

时间:2013-08-30 20:10:24

标签: asp.net-mvc

我正在尝试使用以下内容在ASP.Net MVC 5(Visual Studio 13)中使用部分视图替换部分页面:

浏览/预订/ Index.cshtml:

<div id="bargainBook">
    @Ajax.ActionLink("Click here for the Bargain Book!", 
    "BargainBook",
    new AjaxOptions
    {
        UpdateTargetId = "bargainBook",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "GET"
    })
</div>

在BookController中:

public ActionResult BargainBook()
{
 var book = GetBargainBook();
 return PartialView("_BargainBook", book);
}

private Book GetBargainBook()
{
 return db.Books
     .OrderBy(b => b.Price)
     .First();

}

在_BargainBook.cshtml中:

@model BookDemo.Models.Book

<div>
<p>
    <strong>Book</strong>
    @Model.Name
</p>
<p>
    <strong>Price</strong>
    @String.Format("{0:F}", @Model.Price)
</p>
</div>

当我点击链接时,我会转到部分页面数据的完整页面视图。

4 个答案:

答案 0 :(得分:14)

事实证明,默认情况下不包含jquery.unobtrusive-ajax.js。添加它解决了这个问题。

答案 1 :(得分:12)

作为关于让这项工作的补充说明。我希望VS 2013 RTM包含这个,但无论哪种方式,这都应该让你开始运行

  • 通过工具库包管理器 - >包管理器控制台并输入
  • ,通过nuget安装jquery-validate
install-package Microsoft.jQuery.Ajax.Unobtrusive
  • 在/app_start/bundleconfig.cs
  • 中配置您的捆绑包
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/jquery.validate*")
);
  • 将您的捆绑包添加到
  • 下方的_layout.cshtml
@Scripts.Render("~/bundles/jquery")

或将其包含在您想要在

中使用的每个视图中
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

答案 2 :(得分:0)

我遇到了同样的问题,在MVC中用不引人注目的Ajax驱动我 开始表单选择列表过滤器更新,列表重新显示为部分视图。我在下面添加了前两项,但意识到我还需要最后两项。添加后,部分视图结果非常好。

 <script src="~/Scripts/jquery-ui.unobtrusive-2.1.0.js" ></script>         
 <script src="~/Scripts/jquery-ui.unobtrusive-2.1.0.min.js" ></script>        
 <script src="~/Scripts/jquery.unobtrusive-ajax.js" ></script>         
 <script src="~/Scripts/jquery.unobtrusive-ajax.min.js" ></script>    

答案 3 :(得分:0)

1.使用NuGet

安装Microsoft.jQuery.Unobtrusive.Ajax

2.在_Layout.cshtml中添加对Jquery和Unobtrusive的引用

@ Scripts.Render(&#34;〜/束/的jquery&#34)
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" >