1

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の呼び出し(firebugで検証済み)はのようなもの/DoSearch?Query=some+queryです。(こちらも試し/DoSearch?searchParameters.Query=some+queryてみましたが失敗)

何を試しても、パラメーターは常に空になります (null ではなく、すべてのパラメーターがデフォルト値に初期化されているだけです)。

代わりに次のようにアクションを定義すると:

    public ActionResult DoSearch(string Query, ...)

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

私が想定し:

a) オブジェクト モデルへの入力が GET 要求に対して機能しない。

b) 私は何か間違ったことをしている

何か案は?ありがとう。

4

1 に答える 1

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

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

于 2009-05-30T09:23:50.053 に答える