2009-05-30 13 views
1

私は、POSTの代わりにGETを通して呼び出されたときにMVCが私のカスタムモデルパラメータを埋め込むのに問題があるようです。ASP.NET MVC ModelBinderはGETリクエストやjQuery AJAXで動作しませんか?

私はそうのようなアクションを呼び出すJavaScriptのスニペットを持っている:それがない

$.getJSON('<%= Url.Action("DoSearch") %>' + location.search, 
    function(data) { 
     if (data.Result == "OK") { 
      location.href = location.href; 
     } 
    }); 

何、基本的にそれを呼び出しページと同じクエリ文字列を渡し、別のアクションを呼び出しています。結果が「OK」であれば、現在のページをリフレッシュします。

アクションは、次のように定義されています

public ActionResult DoSearch(SearchParameters searchParameters) 

モデルは次のとおりです。

public class SearchParameters 
{ 
    public string Query; 
    ... 
} 

呼び出すURLは(放火犯で確認)/DoSearch?Query=some+queryのようなものです。

どんなに私が試したものを

、私のパラメータは、常に私がアクションを定義した場合など、空の

(nullではない、ちょうどすべてのパラメータがデフォルト値に初期化されている)アップします(これも成功しません/DoSearch?searchParameters.Query=some+queryを試してみました)

public ActionResult DoSearch(string Query, ...) 

次に、パラメータが正しく入力されます。しかし、モデルではありません。

は、私が想定しています

a)のいずれかのオブジェクトモデルを投入すると、GET要求に対しては機能しません。

b)は、私はすべてのアイデア

何か間違ったことをやっていますか?ありがとう。

答えて

6

クラスにバインドするには、パブリックプロパティが必要です。

public string Query; 

少なくとも、それは私があなたにも、別の問題が発生した場合、私は知らない...それは私のプロジェクトで仕事を得るためにしなければならなかったものだ

public string Query{get;set;} 

と交換。 ああ、私もGETを使用したのでうまくいくはずです。

これは私のパラメータのクラスです:

public class Parameters 
{ 
    public int? page { get; set; } 
    public int? pageSize { get; set; } 
    public string[] columnsToDisplay { get; set; } 
    public string columnToSort { get; set; } 
    public bool? descending { get; set; } 
} 

は、フィールドと結合しませんでした。

+0

本当に正しいです。それは今働く。これについての詳細なドキュメントがあれば幸いです。どうもありがとう。 – andreialecu

+0

ニースの答えトーマス。 +1 - おめでとうございます! –

+0

文書の欠落を「条約」といいます。 :) –

関連する問題