Asp.net 将模型数据返回到actionresult的网格分页问题

Asp.net 将模型数据返回到actionresult的网格分页问题,asp.net,asp.net-mvc,grid.mvc,Asp.net,Asp.net Mvc,Grid.mvc,我有一个这样的操作结果,其中我使用下拉值来限制查询结果: public ActionResult RequestList(OrdersViewModel obj) { var source = from i in db.RequestsWithHours select i; if (obj.SubmittorName != null ) { source = source.Where(z => z.Reque

我有一个这样的操作结果,其中我使用下拉值来限制查询结果:

public ActionResult RequestList(OrdersViewModel obj)
    {
        var source = from i in db.RequestsWithHours select i;

        if (obj.SubmittorName != null )
        {
            source = source.Where(z => z.RequesterID == obj.SubmittorName);
        }
这对第1页很有效,但当我按第2页时,obj为null,查询将恢复为所有记录

视图:


如何从分页操作结果中保留obj值?

实际上,在网格中进行过滤的最佳方法。Mvc使用其过滤功能。分页链接发出GET请求,因此当然,您的下拉列表中的值没有提供,您将在控制器操作中获得
null
。 对滤波能力进行了演示和分析

让我们看看如何修改代码以创建自定义筛选小部件

  • 在具有已知ID的隐藏元素中呈现下拉列表,如下所示:

    <div id="dropDownContainer" style="display: none">
    @* Razor code that renders the dropdown *@
    </div>
    
  • 将列重命名为SubmittorName并将其绑定到筛选器小部件:

    columns.Add(o =>o.RequestNum, "SubmittorName").Titled("Number").SetFilterWidgetType("SubmittorFilterWidget");
    
  • 这样,筛选器将显示在RequestNum列的上方,但实际上将基于SubmittorName进行筛选

  • 注册过滤器小部件(将此脚本放在视图底部,在上面的JS代码之后):

    
    $(函数(){
    pageGrids.gridName.addFilterWidget(新SubmittorFilterWidget());
    });
    
  • 其中
    gridName
    是渲染时提供的网格的名称。您可能需要将第一行修改为
    @Html.Grid(Model.Data).Named(“gridName”).Columns(Columns=>

    告诉我这些修改的结果


    至于其他网格组件的建议:我看到grid.Mvc还不成熟,多年来一直没有收到任何贡献。我建议你去看一个企业级项目。他们的组件是免费的,就像Visual Studio的社区版许可证一样。如果这是一个小项目或单个页面,你可以继续Grid.MVC.

    实际上,在Grid.MVC中进行过滤的最佳方法是使用其过滤功能。分页链接发出GET请求,因此当然,您的下拉列表中的值不提供,并且您将在控制器操作中获得
    null
    。 对滤波能力进行了演示和分析

    让我们看看如何修改代码以创建自定义筛选小部件

  • 在具有已知ID的隐藏元素中呈现下拉列表,如下所示:

    <div id="dropDownContainer" style="display: none">
    @* Razor code that renders the dropdown *@
    </div>
    
  • 将列重命名为SubmittorName并将其绑定到筛选器小部件:

    columns.Add(o =>o.RequestNum, "SubmittorName").Titled("Number").SetFilterWidgetType("SubmittorFilterWidget");
    
  • 这样,筛选器将显示在RequestNum列的上方,但实际上将基于SubmittorName进行筛选

  • 注册过滤器小部件(将此脚本放在视图底部,在上面的JS代码之后):

    
    $(函数(){
    pageGrids.gridName.addFilterWidget(新SubmittorFilterWidget());
    });
    
  • 其中,
    gridName
    是渲染时提供的网格的名称。您可能需要将第一行修改为
    @Html.grid(Model.Data).Named(“gridName”).Columns(Columns=>

    告诉我这些修改的结果


    至于其他网格组件的建议:我看到grid.Mvc还不成熟,多年来一直没有收到任何贡献。我建议你去看一个企业级项目。他们的组件是免费的,就像Visual Studio的社区版许可证一样。如果这是一个小项目或单个页面,你可以继续Grid.MVC.

    我也愿意使用另一个网格,如果它对我要做的事情有更好的支持,我也愿意使用另一个网格,如果它对我要做的事情有更好的支持,我想我会尝试Syncfusion,看看它对我有什么作用。在我的初步评估中,我喜欢Grid.MVC允许创建超链接的更简单的界面例如,链接,但我想复杂性是值得的,以获得我需要的功能。我想我将尝试Syncfusion,看看它对我的作用。在我最初的评估中,我喜欢Grid.MVC允许创建超链接的简单界面,例如,但我想复杂性是值得的,以获得我需要的功能。
    <script>
    $(function () {
    pageGrids.gridName.addFilterWidget(new SubmittorFilterWidget());
    });
    </script>