2010-12-16 11 views
0

Ist es möglich, eine Controller-Aktion aufzurufen, die eine Teilansicht in der View mit dem aktualisierten Modell aktualisiert (aktualisiert)? Wenn ja, kann mich jemand auf ein Beispiel hinweisen?ASP.NET MVC 2: Teilweise aktualisieren?

Ich mache einen Ajax Anruf. Der Anruf sendet ein JSON an den Controller. Der Controller extrahiert das JSON und formatiert es in XML, das dann an ein SPROC übergeben wird. Die Ergebnisse des SPROC aktualisieren das Modell. Hier muss ich die Ansicht aktualisieren ... mit den neuesten Modellergebnissen.

+0

Erzähl uns mehr. Ist das ein Ajax-Szenario? –

+0

@Matt, ja, ich benutze jQuery, um einen Ajax-Anruf zu machen. Ajax sendet JSON, mein Controller nimmt den JSON und konvertiert ihn in eine Zeichenfolge, um einen SPROC aufzurufen. Ich versuche dann, das aktualisierte Modell zu übernehmen und es an das Partielle weiterzugeben. – dcolumbus

Antwort

0

Ja, Sie müssen einfach die Aktion die PartialView mit seinem aktualisierten Modell zurückgeben. Der aufrufende Code könnte wie folgt aussehen:

<div id="MyDiv"></div> 
<%=Ajax.ActionLink("Update", "GetUpdatedPartialView", 
    new AjaxOptions{UpdateTargetId = "MyDiv"}) %> 

Wenn Sie auf den Link klicken, wird der HTML durch Ihre Aktion zurückgegeben wird in die div mit der ID „myDiv“ erhalten platziert.

bearbeiten

ich meinen Code nicht mit mir, aber wenn ich mich recht erinnere, es ist so etwas wie dieses:

var url = '<%=Url.Action("GetUpdatedPartialView")%>'; 
$.post(url, function(data) {$('#MyDiv').html(data);}); 
+0

Wie kann dies mit jQuery Ajax erreicht werden? Ich benutze keinen Actionlink, sondern eine Ajax-Funktion. – dcolumbus

+0

@dcolumbus: Siehe meine Bearbeitung – StriplingWarrior

0

In der Steuerung können Sie nur so etwas wie:

if (Request.IsAjaxRequest()) { 
    return View(name_of_partial, updated_model); 
} 

Am vorderen Ende, es ist nur ein jQuery load, so etwas wie:

$("#target-div").load(url_of_action, data_to_send);