0

私が取り組んでいるカスタム グリッドに並べ替えを実装しようとしていますが、jQuery から MVC パラメーターへのバインディングに問題があります。

以下に示すようなJqueryリクエストがあります

// Javascript

var dataobj =
            {
                test: 3,
                sortInfo: self.sortInfo,
                pagingInfo: {
                    TotalItems: 34, //headercontainer.attr("data-pagingInfo-TotalItems"),
                    ItemsPerPage: headercontainer.attr("data-pagingInfo-ItemsPerPage"),
                    CurrentPage: headercontainer.attr("data-pagingInfo-CurrentPage")
                }
            };

 $.ajax({
            url: self.viewModel.GenericGridHeaderModel.SortingCallbackUrl,
            type: 'POST',
            data: dataobj,
            dataType: "json",
            success: function (html) {...}
         });

// C#
public PartialViewResult GenericGridSort(int test, SortInfo sortInfo, PagingInfo pagingInfo){
...
}

現時点では、Javascript の sortInfo オブジェクトに null 以外の値があり、値が正しくポストされていることがわかりますが、アクション メソッド内では値が正しくバインドされていません。私が見るのは、sortInfo および pagingInfo パラメータのデフォルト値だけです。実際、テスト パラメータは値 3 を正しく取得しています。

明確にするために、ここに私の sortInfo モデルがあります

public enum SortDirection
{
    None = 0,
    Ascending = 1,
    Descending = 2
}

public class SortInfo
{
    public int FieldIndex { get; set; }
    public string FeildName { get; set; }
    public SortDirection SortDirection { get; set; }
}

ここで何が欠けているのか誰か教えてもらえますか?

皆さんありがとう !

4

2 に答える 2

1

JSON ペイロードをエンコードしていないと思います。

次のいずれかを使用する必要があります。

data: $.toJSON(dataobj),

また

data: JSON.stringify(dataobj),

また、contentType を使用する場合:

contentType: 'application/json; charset=utf-8',

MVC への JSON ペイロードの POSTの詳細については、次を参照してください。

また、dataType オプションで戻り値の型を指定します。この場合、アクション メソッドは HTML を返すように見えますが、JSON を指定しています。

于 2013-08-22T17:44:43.083 に答える