ASP.NET MVC ModelBinderは、GET要求および/またはjQueryのAJAXでの作業ではありませんか?

StackOverflow https://stackoverflow.com/questions/929409

質問

私の代わりにPOSTのGETを通じて呼び出されたときにMVCは私のカスタムモデルパラメータを埋めるために取得に問題があるように思えます。

私はそうのようなアクションを呼び出す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のようなものです。

(もなし成功と/DoSearch?searchParameters.Query=some+queryを試してみました)

どんなに私が試したものを、私のパラメータは常に起動したとして空(nullではない、ちょうどすべてのパラメータがデフォルト値に初期化される)

私が代わりにこのようなアクションを定義する場合:

    public ActionResult DoSearch(string Query, ...)

そして、私のパラメータが正しく満たされます。ないモデルとただしています。

私は仮定します:

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

B)私が何か間違ったことをやっている。

任意のアイデア?おかげます。

役に立ちましたか?

解決

あなたは、クラスにバインドするパブリックプロパティを必要とします。

置き換え

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; }
}

フィールドにバインドできませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top