早上好, 我有一个视图显示客户的搜索结果。在视图的顶部,我有一个带有几个复选框的过滤器。用户可以选择多个复选框项,然后按过滤结果按钮。当用户按下按钮时,它会调用过滤结果的操作。该页面也会刷新。我现在的问题是,如何让页面记住选中的复选框。因为返回结果时会重置滤镜元素。 提前谢谢。
答案 0 :(得分:1)
你可以使用TempData。 TempData VS ViewBag VS ViewData
您使用了ViewData,重定向后,ViewBag& ViewData对象不再可用
TempData也是从TempDataDictionary类派生的字典 并存储在短生命会话中,它是一个字符串键和对象 值。不同之处在于物体的生命周期。 TempData的 保留HTTP请求时间的信息。这只是意思 从一页到另一页。这也适用于302/303重定向 因为它在同一个HTTP请求中。帮助您维护数据 从一个控制器移动到另一个控制器或从一个操作移动到 其他行动。换句话说,当你重定向时,“Tempdata”有助于 维护这些重定向之间的数据。它在内部使用会话 变量。在当前和后续请求期间使用临时数据 只表示在确定下一个请求时才使用它 重定向到下一个视图。它需要对复杂数据进行类型转换 键入并检查空值以避免错误。一般用来存放 只有一次消息,如错误消息,验证消息。
TempData["CheckedList"] = YourCheckBoxListValues; //in your controller
在您的视图中
@{
var tempchkboxList = TempData["CheckedList"] as yourStronglyTypeClass;
//or
var tempchkboxList = TempData["CheckedList"].ToString();
}
答案 1 :(得分:0)
取决于应记住输入标准的时间长度。
您也可以通过Session["customerCriteria"] = yourCriteria
将其保存在会话中,但如果您提供了一些代码,则会更容易举例。
答案 2 :(得分:0)
发布表单时(通过单击搜索按钮),您可以在会话变量中保留选中/选中的复选框详细信息。在HttpPost操作中,读取已选中的复选框,并将其添加到viewmodel的collection属性并将其发送回视图。完成后将会话变量值设置为null
(阅读后)。在视图中,使用viewmodel值设置这些复选框的选中状态。
另一种选择是使用ajax。单击搜索时。阅读搜索条件并对操作方法发出ajax请求。返回部分视图并仅更新显示搜索结果的div / table。