2013-08-30 27 views
10

Tôi đang cố gắng để thay thế một phần của một trang với một cái nhìn một phần trong ASP.Net MVC 5 (Visual Studio 13) bằng cách sử dụng sau đây:Tại sao Chế độ xem một phần hiển thị dưới dạng trang đầy đủ trong MVC 5 Visual Studio 13?

Views/Sách/Index.cshtml:

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

trong BookController:

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

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

}

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

Khi tôi nhấp vào liên kết, tôi chuyển đến chế độ xem toàn trang của dữ liệu một phần trang.

Trả lời

14

Chỉ ra rằng jquery.unobtrusive-ajax.js không được bao gồm theo mặc định. Thêm nó đã giải quyết được vấn đề.

+0

Xin chào Jesse, bạn có biết tại sao Microsoft chọn loại bỏ tệp jquery.unobtrusive-ajax khỏi mẫu internet trong MVC 5 so với MVC 4 không? Tôi mất 10 phút để tự hỏi người trợ giúp Ajax của tôi không hoạt động. Tôi nhận ra một số người thích móc hình dạng của họ với jquery thô, nhưng đối với các ứng dụng đơn giản, tôi thực sự thích những người trợ giúp MVC Ajax. Chỉ cần ngạc nhiên Microsoft đã loại bỏ hỗ trợ mặc định cho họ khi bạn bắt đầu một dự án Internet mới. – firecape

12

Lưu ý bổ sung về cách làm việc này. Tôi hy vọng VS 2013 RTM bao gồm này nhưng một trong hai cách này sẽ giúp bạn và chạy

  • Install jquery-xác nhận qua NuGet bằng cách vào các công cụ của thư viện gói Manager-> gói quản lý giao diện điều khiển và nhập
 
install-package Microsoft.jQuery.Ajax.Unobtrusive 
  • Configure bó của bạn trong /app_start/bundleconfig.cs bạn
 
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*", 
    "~/Scripts/jquery.validate*") 
); 
  • Thêm bó của bạn để _layout.cshtml của bạn, hoặc dưới của bạn
@Scripts.Render("~/bundles/jquery")

hoặc bao gồm nó mỗi trong xem bạn muốn sử dụng nó trong

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

Đây là câu trả lời tuyệt vời và đầy đủ, cảm ơn! –

0

tôi đã cùng một vấn đề chở tôi hạt với Ajax không phô trương trong MVC với một bắt đầu biểu mẫu chọn lọc danh sách nhận được cập nhật và danh sách được hiển thị lại dưới dạng xem một phần. Tôi đã thêm hai mục đầu tiên bên dưới nhưng nhận ra rằng tôi cũng cần hai mục cuối cùng. Sau khi thêm các kết quả xem một phần xuất hiện rất độc đáo.

<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 sử dụng NuGet

2.Add tham chiếu đến Jquery và phô trương trong bạn _Layout.cshtml

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

Các vấn đề liên quan