2011-01-21 1 views
9

私は(外部ファイルに)次のjQueryの機能を持っている場合:ASP.NET MVC 3 - jQuery AJAX呼び出しに対してモデルバインドを使用できますか?

、本質的に、フォームからフィールドの束を取る(するPartialViewResultを返す)アクションメソッドに送信し、そして結合し
function getResults(field1, field2, field3) { 
    $.get('/Search/GetResults', { id: field1, type: field2, blah: field3 }, function(data) { 
     $('#target').html(data); 
    }); 
} 

目標divに結果ここで

は、そのアクションメソッドです:

[HttpGet] 
public PartialViewResult GetResults(int id, int type, string blah) 
{ 
    var model = repository.GetResults(id, type, blah); 
    return PartialView("Results", model); 
} 

は、こちらのモデルバインディングを使用することが可能ですか?

function getResults(someModel) { 
    $.get('/Search/GetResults', { model: someModel }, function(data) { 
     $('#target').html(data); 
    }); 
} 

そして、この:

[HttpGet] 
public PartialViewResult GetResults(SearchPreferences prefs) 
{ 
    var model = repository.GetResults(prefs); 
    return PartialView("Results", model); 
} 

または私はJSONオブジェクトを構築し、それを渡す必要があります例えば、私たちはこれを行うことができますか?

var field1 = $('#field1').val(); 
var field2 = $('#field2').val(); 

目標は、jQueryのコードを簡素化/軽減するです:個々のjQueryのDOM呼び出しを介して、現在、これらの値が取得されます。私はそれらのすべての値を取得するためにそれらの呼び出しを持っている、私はそれらをすべてパラメータとして渡す必要があります。

理想的には、1つのオブジェクトを渡すだけです。

推奨事項

EDIT:ジャスト(その間に事前にお答えして自由に感じる)...私は今それをアップ読みASP.NET MVC 3の機能をバインド新しいJSONモデルを使用することができる可能性が実現。

答えて

4

ASP.NET MVC 3では、YES! TheGu自身からthis linkをチェックしてください。

ASP.NET MVC 3は現在、ビルトイン サーバー上のアクションメソッドに、クライアント側のJavaScript からJSONベースの パラメータを投稿するための サポートしています。これにより、 はクライアントと サーバー間でデータを交換しやすくなり、豊富なJavaScript フロントエンドを構築することが容易になります。

+0

笑、私はちょうどその編集を追加し、私たちが話すのと同じ投稿を読んでいます。 :) – RPM1984

+0

ニース...私は時々同じことをする! – Chaddeus

+0

また、http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx – Chaddeus

1

送信しているプロパティを含むクラスを作成すると、デフォルトのモデルバインダーがデータを取り込んでそのクラスにバインドします。あなたの例では、クラスを作成します。

public class SearchPreferences 
{ 
    public int id { get; set; } 

    public int type { get; set; } 

    public string blah { get; set; } 
} 

は、その後、あなたの行動でそれをすることができます:

[HttpGet] 
public PartialViewResult GetResults(SearchPreferences prefs) 
{ 
    var model = repository.GetResults(prefs); 
    return PartialView("Results", model); 
} 

彼らの鍵は、あなたの$に.getデータ内の名前を持っているあなたのSerachPreferencesクラスで名前を一致させることです。

+0

はい、私はそのことを認識しています - そして、私はそのクラスを持っています**。しかし、この方法では、私はまだ回避しようとしているすべての個々のパラメータを渡す必要があります。 – RPM1984

関連する問題