0

早上好,我有一个显示客户搜索结果的视图。在视图的顶部,我有一个带有几个复选框的过滤器。用户可以选择多个复选框项目并按下过滤结果按钮。当用户按下按钮时,它会调用一个过滤结果的操作。页面也刷新了。我现在的问题是,我怎样才能让页面记住选中了哪些复选框。因为当返回结果时,过滤器元素被重置。提前致谢。

4

3 回答 3

1

您可以使用 TempData。 TempData VS ViewBag VS ViewData

您使用了 ViewData,重定向后,ViewBag 和 ViewData 对象不再可用

TempData 也是从 TempDataDictionary 类派生的字典,并存储在短期会话中,它是字符串键和对象值。不同的是对象的生命周期。TempData 保留 HTTP 请求时间的信息。这意味着仅从一页到另一页。这也适用于 302/303 重定向,因为它在同一个 HTTP 请求中。当您从一个控制器移动到另一个控制器或从一个操作移动到另一个操作时,有助于维护数据。换句话说,当您重定向时,“临时数据”有助于维护这些重定向之间的数据。它在内部使用会话变量。在当前和后续请求期间使用临时数据仅意味着当您确定下一个请求将重定向到下一个视图时使用它。它需要对复杂数据类型进行类型转换并检查空值以避免错误。通常用于只存储一次消息,如错误消息、验证消息。

TempData["CheckedList"] = YourCheckBoxListValues; //in your controller

在你的视野中

@{    
      var tempchkboxList = TempData["CheckedList"] as yourStronglyTypeClass;                
                        //or 
       var tempchkboxList = TempData["CheckedList"].ToString(); 
}
于 2013-03-11T08:26:24.723 回答
0

当您发布表单时(通过单击搜索按钮),您可以将选中/选中的复选框详细信息保留在会话变量中。在 HttpPost 操作中,阅读已选中的复选框并将其添加到视图模型的集合属性中并将其发送回视图。完成后将会话变量值设置为null(阅读后)。在视图中,使用您的视图模型值来设置这些复选框的选中状态。

另一种选择是使用 ajax。当您单击搜索时。阅读您的搜索条件并向操作方法发出 ajax 请求。返回部分视图并仅更新显示搜索结果的 div/table。

于 2013-03-14T20:24:35.373 回答
0

取决于应记住输入标准多长时间。您也可以通过 将其保存在您的会话中Session["customerCriteria"] = yourCriteria,但如果您提供了一些代码,则举例会更容易。

于 2013-03-11T08:37:37.120 回答