2012-01-08 2 views
8

Tôi có một trang xemasp.net MVC PartialView @ Ajax.ActionLink không hoạt động

trang điểm của tôi

<div id="beReplaced"> 
    @Ajax.ActionLink("please click on me to bring the partial view", 
        "PatrialViewToBeCalled", 
        new AjaxOptions() 
         {UpdateTargetId = "beReplaced", 
         InsertionMode = InsertionMode.InsertAfter, 
         HttpMethod="Get", 
         LoadingElementId = "prgress" }) 
</div> 

tôi có một điều khiển

public PartialViewResult PatrialViewToBeCalled() 
{ 
    var customer = db.Customers.First(); 

    return PartialView("PartialViewThatMustBeShow",customer); 
} 

nhưng khi tôi bấm trên liên kết được tạo, nó sẽ đưa tôi đến một trang mới thay vì thay thế hoặc gắn thêm một phần vào thẻ div.

Sự cố là gì?

+3

Tôi đã tìm thấy giải pháp. Vấn đề là do tệp unobtrusive-ajax.min.js bị hỏng. – 1AmirJalali

+0

Bạn nên đăng bài này như là một giải pháp và đóng này – Shenaniganz

+0

bạn có ý nghĩa gì khi đóng? làm thế nào tôi nên đóng nó? – 1AmirJalali

Trả lời

1

Tôi đã tìm ra giải pháp. Vấn đề là do tệp unobtrusive-ajax.min.js bị hỏng.

0

Nếu bạn đã tải jQuery vào trang của mình, tại sao bạn không sử dụng phương thức tải/nhận jquery đơn giản để xem một phần?

<div id="beReplaced"> 
    <a href="#" id="lnk1">please click on me to bring the partial view</a> 
</div> 

Javascript

$("#lnk1").click(function(){ 
$.get('/controller/PatrialViewToBeCalled', function(data) { 
     $('#beReplaced').html(data); 
     }); 
}); 
+0

Bởi vì tôi đang cố gắng giữ cho tầm nhìn của tôi sạch sẽ và làm cho nó càng nhỏ càng tốt và Ajax helpers trong MVC có sức mạnh để làm cho báo cáo phức tạp. – 1AmirJalali

+1

Nếu tôi muốn giữ cho quan điểm của tôi sạch sẽ, tôi sẽ dính với nguyên tắc không phô trương. Tôi cảm thấy cách tiếp cận jQuery này là sạch hơn nhiều so với phương pháp tham số ajax của bạn bên trong xem (nơi tôi muốn xem chỉ html markup chỉ nhiều như tôi có thể) – Shyju

+0

Downvoter? quan tâm để bình luận? – Shyju

10

Nó có thể được rằng bạn đang thiếu:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

Trong giao diện chính. Điều này cho biết quan điểm chính để nhận ra helper ajax.

+0

+1 Điều đó giải quyết được cho tôi - cảm ơn rất nhiều. – EM0

0

Nếu bạn đang làm việc với ASP NET MVC 4 chắc chắn rằng

@Scripts.Render("~/bundles/jquery") 

là vào cuối của thẻ cơ thể là tốt.

 @Scripts.Render("~/bundles/jquery") 
     @RenderSection("scripts", required: false) 
    </body> 
</html> 
0

Tôi đã thực hiện quá lâu, nghĩ rằng nó không hoạt động. Xem nguồn trang cũng không hiển thị bất kỳ thứ gì.

Cuối cùng, tôi phát hiện ra nó thực sự đã hoạt động khi tôi thấy các yêu cầu thành công trong bảng điều khiển Firebug. Nó chỉ cho thấy nó ra khỏi màn hình. Trong tab HTML của Firebug cuối cùng tôi đã tìm thấy đầu ra, mặc dù nó không hiển thị trong nguồn trang.