2011-01-03 5 views
1

jQueryを使用してASP.NET MVCでフォームポストに応答する方法を知っていますが、もう少し簡単な問題があります。jQuery、ASP.NET MVCでActionResultsに応答

シナリオは、画面上に順序付きリストのような項目のリストがあることです。

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

これはもちろん、粗例であるが、基本的なJISTは、ユーザが1つをクリックしたとき、それはいくつかのサーバー側のロジックを実行することである...ので、コントローラに、などの方法があります。

これは非常に単純なロジックですが、それでもデータベースへのアクセスが必要なので、JavaScriptで行うことはできません。私はそれを私のコントローラーに当てる必要があります。問題は、私がUIにこれに応答させたいということです。

フォームを使用しないでこれを正確に配線する方法がわかりません。助言がありますか?

答えて

4

jquery ajaxを使用してください。この例はあなたに行くべきです。

サーバー:

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

クライアント:

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

これは私の最初の考えでもありました。私が実行している問題は、コントローラーがブール値として「true」を返すときに、javascriptでそのように受け入れられないように見えるということです。私はあなたがjsonとしてdataTypeを指定したことに気付きました - これがコントローラがデータを返す方法に腐食するのはどうですか? – Ciel

+0

@Stacey - JsonResultを使用し、Json([object])を返す必要があります。更新されたポストを参照してください –

+3

Josiah、あなたはGETリクエストを許可するためにJson()の第2引数を欠いています(ASP.NET MVC 2+を前提としています)。あるいは、JQuery ajax呼び出しがPOSTをそのメソッドとして使用することを確認することもできます。 –

0

MVCの主要コンポーネントが不足していると思うので、Nerd Dinnerサンプルアプリケーションを使ってASP.NET MVCの基本を十分に理解することをお勧めします。

Item 1のリンクを印刷するときは、操作するデータのIDを渡してHtml.ActionLinkを使用し、コントローラに適切なActionメソッドを追加してこれを処理する必要があります。

+0

いいえ、私はMVCの重要なコンポーネントが欠落していないよ - 私は、この特定にするつもり正確に何をしています状況。それは、非形式の投稿からのJavascriptで応答する必要があります。単純なハイパーリンクがうまくいくなら、私はそれをやるだけです。しかし、それは何が起こる必要があるために動作しません。 – Ciel

+0

MVCがフレームワークに組み込むためにこれまでに優秀だったAJAXを実装する必要があります。 – Keith

関連する問題