有什么方法可以在后退按钮中显示带有确切数据的前一页从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 步:清除会话
我有一个主页,其中包含几个下拉控件、一个网格、几个文本框等。使用下拉列表 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 步:清除会话