2012-01-08 7 views
8

Ho una pagina vistaasp.net mvc PartialView @ Ajax.ActionLink non funziona

mia pagina vista

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

ho un controller

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

    return PartialView("PartialViewThatMustBeShow",customer); 
} 

ma quando clicco sul link generato mi porta a una nuova pagina invece di sostituendo o aggiungendo la vista parziale al tag div.

Qual è il problema?

+3

Ho trovato la soluzione. Il problema era dovuto al file corrotto non disturbato-ajax.min.js. – 1AmirJalali

+0

Dovresti postare questa soluzione come soluzione e chiudi questo – Shenaniganz

+0

cosa vuoi dire chiudendo? come dovrei chiuderlo? – 1AmirJalali

risposta

1

Ho trovato la soluzione. Il problema era dovuto al file corrotto non disturbato-ajax.min.js.

0

Se nella pagina è caricato jQuery, perché non utilizzare il semplice metodo di caricamento/caricamento di jquery per ottenere la vista parziale?

<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

Perché sto cercando di mantenere la mia vista pulita e renderla il più piccola possibile e gli helper Ajax in MVC hanno il potere di rendere dichiarazioni complesse. – 1AmirJalali

+1

Se voglio mantenere le mie opinioni pulite, vorrei attenermi a un principio non intrusivo. Ritengo che questo approccio di jQuery sia molto più pulito rispetto ai metodi dei parametri ajax all'interno della vista (dove vorrei vedere solo il markup html solo quanto posso) – Shyju

+0

Downvoter? cura di commentare? – Shyju

10

Avrebbe potuto essere che ti mancava il:

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

Nella vista principale. Questo dice alla vista principale di riconoscere l'helper ajax.

+0

+1 Questo lo ha risolto per me - grazie mille. – EM0

0

Se si lavora con ASP .NET MVC 4 assicurarsi che

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

è alla fine del tag corpo.

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

Ho lavorato troppo a lungo, pensando che non funzionasse. Anche la visualizzazione del sorgente della pagina non ha mostrato nulla.

Alla fine, ho scoperto che effettivamente funzionava quando ho visto le richieste riuscite nella console di Firebug. Lo mostrava solo fuori dallo schermo. Nella scheda HTML di Firebug ho finalmente trovato l'output, anche se non compare nell'origine della pagina.