Asp.net mvc 过滤列表、订单、编辑行和返回
情况如下: 您有一个项目列表。列表可以分页、过滤和排序。每行上都有一个编辑按钮。单击编辑按钮,转到页面并保存 现在-我想回到以前的过滤器/页面 我还希望尽可能地使其通用,以便在多个页面上轻松应用 我是这么想的: 我的行动如下:Asp.net mvc 过滤列表、订单、编辑行和返回,asp.net-mvc,Asp.net Mvc,情况如下: 您有一个项目列表。列表可以分页、过滤和排序。每行上都有一个编辑按钮。单击编辑按钮,转到页面并保存 现在-我想回到以前的过滤器/页面 我还希望尽可能地使其通用,以便在多个页面上轻松应用 我是这么想的: 我的行动如下: public ActionResult Index(StudentFilter studentFilter) 创建一个覆盖OnActionExecuting的属性。如果有ActionParameters传入,那么可能会重新筛选列表,因此只需存储新的筛选器(这里我想实际获
public ActionResult Index(StudentFilter studentFilter)
创建一个覆盖OnActionExecuting的属性。如果有ActionParameters传入,那么可能会重新筛选列表,因此只需存储新的筛选器(这里我想实际获取StudentFilter对象-因此欢迎有关如何获取该对象的想法)
如果没有ActionParameters,则加载存储的过滤器(可能来自json序列化的cookie)并在模型上设置它
这里的问题是我不知道如何填充模型
有什么建议吗 您可以为过滤器想出某种基类:
public class BaseFilter
{
public string Property { get; set; }
public FilterType Type { get; set; }
public Object[] Arguments { get; set; }
public Expression<T> GenerateExpression()
{
....
}
}
如果不想存储其他参数,可以创建其他类并将其存储在会话中,而不是列表:
公共类ListState
{
公共整型页{get;set;}
公共列表AppliedFilters{get;set;}
公共字符串顺序{get;set;}
}
对于这种类型的应用程序,我通常只加载某种类型的jQuery网格,并在客户端执行所有排序(有时还进行过滤)。我查看了jQuery网格,发现它们有点麻烦,我可以更深入地查看它们。
var items = Repository.GetAll();
var filters = Session["key"] as List<BaseFilter>;//Session wrapper usage recommended here
foreach(var filter in filters)
{
items = items.Where(filter.GenerateExpression());
}
public class ListState
{
public int Page { get; set; }
public List<BaseFilter> AppliedFilters { get; set; }
public string Order { get; set; }
}