有什么方法可以在后退按钮中显示带有确切数据的前一页从MVC中的另一个页面单击

is there any way to show the previous page with exact data in the back button click from another page in MVC

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

示例:如果下拉列表包含值 All,Limited,Exceptional。对于下拉列表中的每个项目,网格值将不同,对于初始负载,我采用 All 数据。

情况如下

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

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

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

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

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

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

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 步:在页面更改发生之前将页面的当前状态保存在 json 对象中并将其保存在会话存储中

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

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

第 2 步:下次如果用户访问此页面,请检查会话是否为空。

第三步:如果session不为空则读取数据并在视图中填充session数据以保持状态

第 4 步:清除会话