MVC复选框选中状态问题

时间:2013-03-11 08:07:34

标签: asp.net-mvc asp.net-mvc-3

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

3 个答案:

答案 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。