2010-12-09 11 views
2

Controller:ASP.NET MVC 2: jQuery Aufruf Aktion, Update Ansicht?

public ActionResult Index() 
     { 

      // not using the interface right now 
      DealsRepository _repo = new DealsRepository(); 
      var deals = _repo.GetDeals("<Request><ZipCode>92618</ZipCode></Request>"); 

      return View(deals); 
     } 

     [HttpPost] 
     public ActionResult Index(string data) 
     { 

      // not using the interface right now 
      DealsRepository _repo = new DealsRepository(); 
      var deals = _repo.GetDeals(data); 

      return View(deals); 
     } 

jQuery:

var url = '<%: Url.Action("Index", "Deal") %>'; 
var data = '<Request><ZipCode>92618</ZipCode></Request>'; 

$.post(url, data, function (result) { 
    alert(result); 
}); 

Was ich versuche mit dem aktualisierten Modell ist aktualisieren (neu laden) die Ansicht zu tun ... Ich will nicht jQuery verwenden, um Aktualisiere den Inhalt. Relay die Ansicht mit dem aktualisierten Modell.

Mit anderen Worten, sobald ein Benutzer einige Verfeinerungen in ihrer Suche eingibt oder einen Filter auswählt, muss ich den Anruf tätigen und die Seite mit den neuesten Modellsuchergebnissen neu laden.

Antwort

2

Sie brauchen kein Javascript überhaupt, um ein Formular zu posten, was es scheint, dass Sie versuchen, zu tun.

Fügen Sie einfach einen Absenden-Button zu Ihrem HTML-Formular hinzu. Wenn Sie auf die Schaltfläche "Senden" klicken, wird das Formular an den Controller und die Aktion gesendet, die mit dem HTML-Formular verknüpft sind. Das Controller und die Aktion wird eine Action zurückgegeben, der die aufgefrischt Ansicht sein, wenn Sie so wählen ...

Ihre Ansicht nach können Sie etwas tun:

<%Html.BeginForm("ActionName", "ControllerName", FormMethod.Post); %> 
<!-- more form fields here --> 
<input type="submit" value="Go"/> 
<%Html.EndForm(); %> 
+0

Ich nehme an, dass dies für einen Fall die Antwort wäre. Vielen Dank. – dcolumbus

0

Die Ansicht, die einen div oder ein ähnliches Objekt mit einer ID (zB myDivId), dann in Ihrem Beitrag haben soll, müssen Sie gerade

$.post(url, data, function (result) { 
    $('#myDivId').html(result); 
}); 
+0

Nein, ich will nicht verwenden, jQuery um den Inhalt auf der Seite noch zu aktualisieren. Ich würde lieber die Seite aktualisieren ... das versuche ich zu erreichen. – dcolumbus

0

Manchmal nach einem Button-Klick ich nachladen tun, nur die Seite einreichen .

<script type="text/javascript"> 

    $("#SubmitButton").click(function() { 
      window.location.reload(true); 
    }); 

</script> 
+0

Ich glaube nicht, dass ich das tun sollte. Wie soll eine View neu erstellt werden, wenn der Model-Inhalt aktualisiert werden muss? – dcolumbus

+0

Sie können View() einfach von Ihrem Controller zurückgeben, indem Sie das neue Modell übergeben oder RedirectToView aufrufen. Der Submit-Button ruft eine controler-Aktion auf, Sie aktualisieren Ihr Modell und geben es dann erneut zurück, um den View-Aufruf ("viewname", Modell) anzuzeigen. – rboarman

+0

Diese Methode übergibt jedoch keine Daten an den Controller, was die Voraussetzung ist. –

0

Wenn Sie einfach die Seite gehen zu aktualisieren, ist l sehr wenig Vorteil für den JS AJAX-Aufruf, wenn Sie für ein terminiertes Ereignis wieder das Warten in dem 1-30 zweiten Bereich

Wenn die der Fall ist, warten Sie, bis Sie eine Antwort erhalten und einfach tun einen erneuten Laden in JS:

window.location.reload() 

oder

history.go(0) 

(Ich empfehle das ehemalige)

Verwandte Themen