【发布时间】:2017-01-09 12:48:22
【问题描述】:
我需要将视图模型传递给控制器,如下所示。
[HttpPost]
public JsonResult GetSearchResultsJson(SearchCriteria searchCriteria)
{
}
SearchCriteria 定义为:
public class SearchCriteria
{
public SearchData searchData { get; set; }
public SearchMode searchMode { get; set; }
}
SearchMode 在哪里:
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", new { searchData.name = xxx, searchData.age = xxx, .... })。请注意,如果您将所有这些属性组合在一个类中,那么假设模型包含属性SearchCriteria Criteria,它可能只是Url.Action("GetSearchResultsJson", Model.Criteria)。但是如果你确实有 61 个属性(加上searchMode中的 3 个),那么你很有可能会超过查询字符串限制并抛出异常
标签: c# asp.net-mvc viewmodel pagedlist