Почему Partial View отображается как полная страница в MVC 5 Visual Studio 13?

Я пытаюсь заменить часть страницы частичным представлением в ASP.Net MVC 5 (Visual Studio 13), используя следующее:

Views/Book/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>

Когда я нажимаю на ссылку, я перехожу к полному просмотру страниц частичных данных страницы.

Ответ 1

Оказывается, что jquery.unobtrusive-ajax.js по умолчанию не включен. Добавление этого решения проблемы.

Ответ 2

В качестве дополнительной заметки о том, как это работает. Я надеюсь, что RT 2013 RTM включит это, но в любом случае это должно помочь вам запустить и запустить

  • Установите jquery-validate через nuget, перейдя в консоль диспетчера пакетов инструментов → менеджер пакетов и введя
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")
}

Ответ 3

У меня была одна и та же проблема, которая заставила меня замочить с ненавязчивым Ajax в MVC с начните обновлять фильтр выбора формы, и список повторно отображается как частичный вид. Я добавил первые два пункта ниже, но понял, что мне также нужны последние два. После добавления результаты частичного просмотра появились очень красиво.

 <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>    

Ответ 4

1.Установите Microsoft.jQuery.Unobtrusive.Ajax с помощью NuGet

2. Добавьте ссылку на JQuery и ненавязчивую в свой _Layout.cshtml

@Scripts.Render( "~/связки/JQuery" )
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" >