Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 对PagedList和ViewModel使用附加过滤器_Asp.net Mvc_Razor_Automapper_Pagedlist - Fatal编程技术网

Asp.net mvc 对PagedList和ViewModel使用附加过滤器

Asp.net mvc 对PagedList和ViewModel使用附加过滤器,asp.net-mvc,razor,automapper,pagedlist,Asp.net Mvc,Razor,Automapper,Pagedlist,我需要知道如何在使用ToPagedList时将附加属性添加到返回的对象中,以便避免使用ViewBags传递排序顺序参数 我知道,当使用ToPagedList时,它会将IEnumerable转换为IPagedList,我将视图强类型化为PagedList.IPagedList,它允许我获取分页并使用foreach在表中显示结果。然而,似乎没有任何方法可以让我传递额外的值,比如我的排序顺序或过滤器字符串 我正在使用在我的域和ViewModel之间进行映射,这样可以将我的域模型展平为ViewModel

我需要知道如何在使用
ToPagedList
时将附加属性添加到返回的对象中,以便避免使用ViewBags传递排序顺序参数

我知道,当使用
ToPagedList
时,它会将IEnumerable转换为IPagedList,我将视图强类型化为
PagedList.IPagedList
,它允许我获取分页并使用
foreach
在表中显示结果。然而,似乎没有任何方法可以让我传递额外的值,比如我的排序顺序或过滤器字符串

我正在使用在我的域和ViewModel之间进行映射,这样可以将我的域模型展平为ViewModel:

Mapper.CreateMap<ToDo, IndexToDoViewModel>()
      .ForMember(dest => dest.Priority, 
                 opt => opt.MapFrom(src => src.Priority.PriorityName))
      .ForMember(dest => dest.Staff, 
                 opt => opt.MapFrom(src => src.Staff.StaffName));
要显示我的待办事项列表,请使用

@foreach (var item in Model) { ....
反复浏览

正如我所说的,问题是我还希望在我的ViewModel中具有诸如
排序器
搜索过滤器
IncludeCompleted
之类的属性,因为目前它们在ViewBags中传递,我想清理一下

@Html.ActionLink("Name", "Index", new {sortOrder=ViewBag.NameSortParam, 
                                  includeComplete = ViewBag.IncludeCompleted})
但因为它们不是ToDo实体的一部分,它们真的属于ToPagedList扩展,我被卡住了。理想情况下,我希望以某种方式将它们与作为PagedList公开的其他属性一起传递,如
PageCount
PageNumber
,但除了派生我自己的PagedList或分叉原始页外,我不知道如何支持传递此类属性。github页面上的所有示例都大量使用了ViewBag

我无法在我的
IndexToDoViewModel
周围添加包装器类,因此它有一个IEnumerable或IPagedList以及排序属性,因为这会使我的自动映射无效

我是否坚持使用ViewBags作为Sortor过滤器,或者是否有办法通过获取ViewModel中包含的属性、使用AutoMapper并保持视图的强类型化来获取我的蛋糕并吃掉它

@Html.PagedListPager(@Model, page => Url.Action("Index", new { page = page}))
@foreach (var item in Model) { ....
@Html.ActionLink("Name", "Index", new {sortOrder=ViewBag.NameSortParam, 
                                  includeComplete = ViewBag.IncludeCompleted})