2011-01-03 12 views
1

Ich weiß, wie man auf einen Formulareintrag in ASP.NET MVC mit jQuery reagiert, aber ich habe Probleme mit etwas, das ein wenig einfacher ist.Reagieren auf ActionResults mit jQuery, ASP.NET MVC

Das Szenario ist, dass es eine Liste von Elementen auf dem Bildschirm gibt, wie eine geordnete Liste.

<ul> 
    <li>Item 1</li> // each will corrospond with an id. 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

Dies ist ein grobes Beispiel ist natürlich, aber der grundlegende jist ist, dass, wenn der Benutzer eines klickt, wird es einige serverseitige Logik auszuführen ... so in der Steuerung gibt es ein Verfahren, wie. .

public bool CheckSomething(int id) 
{ 
// do some logic to determine if the result should be true 
return true; 
} 

es ist sehr einfache Logik, wirklich - aber es bedarf noch der Zugriff auf die Datenbank, so kann ich es nicht in Javascript tun. Ich muss es meinen Controller getroffen haben. Das Problem ist, dass ich möchte, dass die Benutzeroberfläche darauf reagiert.

Ich habe eine schwierige Zeit herauszufinden, wie man das genau ohne ein Formular eindrahten. Irgendwelche Vorschläge?

Antwort

4

Verwenden Sie Jquery Ajax. Dieses Beispiel sollte Sie weiterbringen.

Server:

public JsonResult CheckSomething(int id) 
{ 
// do some logic to determine if the result should be true 
return Json(true); 
} 

Auftraggeber:

$('li').click(function(){ 
    $.ajax({ 
     url: '/[controller name]/checksomething/' + this.id, 
     dataType: 'json', 
     type: 'POST', 
     success: function(result){ 
      if(result) {} //... 
     } 
    }); 
}); 
+0

Das war auch mein erster Gedanke - das Problem, auf das ich stoße, ist, dass wenn der Controller "True" als Boolean zurückgibt, es in Javascript nicht so akzeptiert wird. Ich habe bemerkt, dass Sie den Datentyp als json markiert haben - wie hängt das mit der Art zusammen, wie der Controller die Daten zurückgeben soll? – Ciel

+0

@Stacey - Sie müssen ein JsonResult verwenden und Json ([object]) zurückgeben. Siehe aktualisierten Beitrag –

+3

Josiah, Sie vermissen das zweite Argument zu Json() GET-Anforderungen (vorausgesetzt, ASP.NET MVC 2+). Alternativ können Sie sicherstellen, dass der JQuery-AJAX-Aufruf POST als Methode verwendet. –

0

Ich denke, dass Sie eine Schlüsselkomponente von MVC vermissen, zu dem ich empfehlen, durch die Nerd Dinner Beispielanwendung zu gehen, um die Grundlagen von ASP.NET MVC vollständig zu verstehen.

Wie auch immer, wenn Sie Ihre Item 1 Links drucken, sollten Sie Html.ActionLink verwenden, die ID der Daten, die Sie bearbeiten möchten, übergeben und die entsprechende Aktionsmethode in Ihrem Controller hinzufügen.

+0

Nein, ich bin nicht die Schlüsselkomponente von MVC fehlt - ich genau mache, was ich in diesem speziellen zu tun beabsichtigen Lage. Es muss mit Javascript von einem non-form Post antworten. Wenn ein einfacher Hyperlink funktionieren würde, würde ich das tun. Aber das wird nicht funktionieren für das, was passieren muss. – Ciel

+0

Sie müssen einige AJAX implementieren, die MVC war immer in der so innerhalb des Rahmens. – Keith

Verwandte Themen