2013-08-30 9 views
10

próbuję zastąpić część strony z częściowym widokiem w ASP.NET MVC 5 (Visual Studio 13) stosując następujące:Dlaczego Partial View wyświetla się jako pełna strona w MVC 5 Visual Studio 13?

views/Książka/Index.cshtml:

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

w BookController:

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

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

}

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

Po kliknięciu łącza przechodzę do pełnego widoku strony częściowych danych strony.

Odpowiedz

14

Okazuje się, że plik jquery.unobtrusive-ajax.js nie jest domyślnie dołączony. Dodanie go rozwiązało problem.

+0

Cześć Jesse, czy wiesz, dlaczego Microsoft zdecydował się usunąć plik jquery.unobtrusive-ajax z szablonu internetowego w MVC 5 w porównaniu z MVC 4? Zajęło mi dobre 10 minut, zastanawiając się, czy mój pomocnik Ajaxa nie działa. Zdaję sobie sprawę, że niektórzy ludzie lubią podpinać formularz za pomocą jquery, ale dla prostych aplikacji bardzo podoba mi się pomocników Ajaxa MVC. Po prostu zaskoczony Microsoft usunął domyślną obsługę dla nich po uruchomieniu nowego projektu internetowego. – firecape

12

Jako dodatkowa uwaga na temat tego działa. Mam nadzieję, VS 2013 RTM obejmuje to ale tak czy inaczej to powinno Ci uruchomiony

  • Install jquery-zweryfikować poprzez Nuget przechodząc do narzędzi Biblioteka pakietu Manager-> konsoli menedżera pakietów i wprowadzając w
 
install-package Microsoft.jQuery.Ajax.Unobtrusive 
  • Skonfiguruj pakiet w swoim /app_start/bundleconfig.cs
 
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*", 
    "~/Scripts/jquery.validate*") 
); 
  • Dodaj swoją paczkę do _layout.cshtml albo pod swoim
@Scripts.Render("~/bundles/jquery")

lub umieścić go w każdym zobaczyć chcesz go używać w

 
@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
+1

To jest wspaniała i pełna odpowiedź, dzięki! –

0

miałem ten sam problem zawiózł mnie orzechy z dyskretnym Ajaxem w MVC z filtrem listy wyboru rozpoczynających się formularzy, zaczynają być aktualizowane, a lista jest ponownie wyświetlana jako widok częściowy. Dodałem dwie pierwsze pozycje poniżej, ale zdałem sobie sprawę, że potrzebowałem również dwóch ostatnich. Po dodaniu wyniki częściowego widoku pojawiły się bardzo ładnie.

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

1.Install Microsoft.jQuery.Unobtrusive.Ajax użyciu Nuget

2.Dodaj zdjęcia odniesienie do jQuery i Dyskretna w swoim _Layout.cshtml

@ Scripts.Render ("~/wiązkach/jquery ")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" >

Powiązane problemy