Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 过滤列表、订单、编辑行和返回_Asp.net Mvc - Fatal编程技术网

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; } 
}