以下のように、コントローラにビューモデルを渡す必要があります。 SearchModeである場合MVC viewModelとページされた結果
public class SearchCriteria
{
public SearchData searchData { get; set; }
public SearchMode searchMode { get; set; }
}
:
[HttpPost]
public JsonResult GetSearchResultsJson(SearchCriteria searchCriteria)
{
}
SearchCriteriaは次のように定義され
public class Searchmode
{
public int? mode { get; set; }
public int? pageNumber { get; set; }
public int? pageSize { get; set; }
}
そしてSearchDataは、検索するためにあるかの項目を定義61の特性を有しています。
public class SearchData
{
public string name {get;set;}
....
public int age {get;set;}
}
jQueryを使用してオブジェクトを作成し、コントローラに渡します。 .NetはこのオブジェクトをSearchCriteria型のオブジェクトに変換します。すべてが動作していますが、PagedListPagerコントロールがレンダリングされるとき、オブジェクトを作成するために使用されたjQueryをどのようにエミュレートしますか?
私は、次のコードを持っている瞬間:
@Html.PagedListPager(Model.DocumentsPaged, pageNumber => Url.Action("GetSearchResultsJson", XXXXXXXXXXXXXXXXXXXXXXX),pLRO)
そしてXXXXXXXXXXXXXXXXXXXXXXXとしてマークされたビットに入れているかわかりません。
jQueryでは、SerachModeオブジェクトのpageNumberプロパティを変更できますが、これは正しいページを提供しますが、Html.PagedListPagerヘルパー内で更新する必要があるのはこのプロパティです。
あなたが生成する必要があります'Url.Action(" GetSearchResultsJson "、新しい{searchData.name = xxx、searchData.age = xxx、....})'という各プロパティのルート(クエリ文字列)値。これらのプロパティをすべて1つのクラスにまとめると、モデルに 'SearchCriteria Criteria'というプロパティが含まれていると仮定すると、' Url.Action( "GetSearchResultsJson"、Model.Criteria)になります。しかし、実際に61のプロパティ( 'searchMode'に3を加えたもの)があると、クエリ文字列の制限を超えて例外がスローされる可能性が高くなります –