2012-01-08 20 views
8

Mam stronę widokasp.net mvc PartialView @ Ajax.ActionLink nie działa

moja strona widok

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

Mam kontroler

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

    return PartialView("PartialViewThatMustBeShow",customer); 
} 

ale po kliknięciu na wygenerowanym łączu doprowadza mnie do nowej strony zamiast zastępowania lub dołączania częściowego widoku do znacznika div.

Na czym polega problem?

+3

Znalazłem rozwiązanie. Przyczyną problemu był uszkodzony dysk unftrusive-ajax.min.js. – 1AmirJalali

+0

Powinieneś opublikować to jako rozwiązanie i zamknąć to – Shenaniganz

+0

co rozumiesz przez zamknięcie? jak powinienem to zamknąć? – 1AmirJalali

Odpowiedz

1

Znalazłem rozwiązanie. Przyczyną problemu był uszkodzony dysk unftrusive-ajax.min.js.

0

Jeśli masz jQuery załadowany na stronę, dlaczego nie skorzystać z prostej metody pobierania/ładowania jquery, aby uzyskać częściowy widok?

<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

Ponieważ staram się zachować mój widok czysty i uczynić go tak małym, jak to możliwe, a pomocnicy Ajax w MVC mają moc tworzenia złożonych oświadczeń. – 1AmirJalali

+1

Jeśli chcę zachować moje poglądy czyste, będę trzymać się z dyskretną zasadą.Myślę, że podejście jQuery jest znacznie czystsze niż podając swoje metody parametrów ajax w widoku (gdzie chciałbym zobaczyć tylko znaczniki HTML tylko tyle mogę) – Shyju

+0

Downvoter? czy chcesz się wypowiedzieć? – Shyju

10

Mogło być, że jesteś brakuje:

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

W widoku głównym. Dzięki temu główny widok rozpozna pomocnika ajaxowego.

+0

+1 To rozwiązało to dla mnie - wielkie dzięki. – EM0

0

Jeśli pracujesz z ASP.NET MVC 4 upewnić, że

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

jest w końcu tagu ciała, jak również.

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

Pracowałem nad tym zbyt długo, sądząc, że to nie działa. Wyświetlanie źródła strony również nic nie pokazywało.

W końcu dowiedziałem się, że faktycznie zadziałało, gdy zobaczyłem pomyślne żądania w konsoli Firebug. Tylko pokazywał to poza ekranem. Na karcie HTML Firebug znalazłem wynik, mimo że nie pojawia się w źródle strony.

Powiązane problemy