有什么方法可以显示前一页,并在返回按钮中单击MVC中的另一页来获得准确的数据

时间:2019-01-07 06:47:52

标签: asp.net-mvc asp.net-mvc-4 back-button

我有一个主页,其中包含几个下拉控件,一个网格,几个文本框等。使用下拉change event,网格将根据下拉选择重新加载新数据。

示例:如果下拉列表包含值All,Limited,Exceptional。对于下拉列表中的每个项目,围栏值都将不同,对于初始加载,我将使用All数据。

情况如下

第1步:用户进入主页(现在他正在查看所有数据)

第2步:他使用下拉列表过滤了值“ Limited”的数据(现在他只看到网格中的有限数据)

第3步:然后他从网格中选择一个项目,这会将用户带到该项目的详细信息页面。

第4步:用户单击详细信息页面中的后退按钮,这将提供历史记录后退功能,并将用户带到主页,因为控制器方法再次点击该页面会重新加载并填充所有数据。 代替此行为,我想向用户显示“受限”数据(用户进入“详细信息”页面之前过滤的数据)。

在MVC中是否有任何机制可以缓存数据?

The method what I am planning to go with 1:当前,我正计划将下拉选择数据发送到下一个页面请求,并且当用户单击“后退”按钮时,我会将其发送回主页控制器,并基于该值,我可以得到我想要的过滤信息。

The method what I am planning to go with 2:将过滤器数据保存到浏览器存储中,当用户返回该页面时,检查是否存在此数据,并基于此重新加载网格。

如果我有很多过滤条件,例如不同的下拉列表,不同的文本框等,上述方法将很困难,那么还有其他方法可以做到吗?像使用控制状态缓存上一页一样?

这就是我在详细信息页面上单击后退按钮所要做的

 $("#btnBack").click(function () {
        window.history.back();
    });

Edit:我使用Kendo网格填充数据,是的,这是Kendo默认的Ajax调用用于获取数据。

  @(Html.Kendo().Grid<ModelName>()
        .Name("SomeGrid")
        .Columns(columns =>
                {

                    columns.Bound(p => p.NAME).Title("Name").Width("26%")
                      .ClientTemplate("<a href=\"" + @Url.Content("~/ControllerName/ActionName/Details/#=DOCKEY#") + "\">#=PTR_NAME#</a>");
                    columns.Bound(p => p.UPN).Title("UPN").Width("10%");

                })
        .Sortable()
        .Scrollable(scrollable => scrollable.Virtual(true).Height(400))
        .DataSource(dataSource => dataSource
                .Ajax()
                .Sort(p => p.Add(m => m.LNAME))
                    .PageSize(10000)
                                       .Read(read => read.Action("Action", "ControllerName"))
                )
        .Filterable()
        .ColumnMenu()
        .Events(events => events.DataBound("onDataBound"))
        .Pageable(p => p.Refresh(true).PreviousNext(false).Numeric(false))
        )

有人可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

最后使用浏览器的会话状态存储数据。

步骤1:在发生页面更改之前,将页面的当前状态保存在json对象中,并将其保存在会话存储中

$(window).bind('beforeunload', function() {
    //Get the current state of the page and store it in the browser session as json string
});

注意::存储当前状态意味着保存输入值,下拉选择,网格过滤器等

第2步:下次用户进入此页面时,请检查会话是否为空。

第3步:如果会话不为空,则读取数据并在视图中填充会话数据以保留状态

第4步:清除会话