如何在表单发布后维护mvc checkboxlist的状态?

时间:2010-08-30 09:15:07

标签: asp.net-mvc

我正在使用checkboxlist帮助器并动态绑定它..现在我想保持复选框的状态吗?

 public ActionResult Step3()
        {
            CustomerQuestion _Cust = new CustomerQuestion();
            //Retrieve the answer from database by siteid
            var Questions = QAService.GetAllAnswer(1);
            var Questionscount = QAService.GetAllAnswer(1).Count();
            _Cust.Question18 = Questions.Where(s => s.QuestionID == 18);
            return View(_Cust);
        }

这是视图

 <%= Html.CheckBoxList("Question18", new SelectList(Model.Question18, "AnswerID", "Answer"))%>

2 个答案:

答案 0 :(得分:0)

显示代码,以便我们为您提供帮助。

我想你想在返回视图时保留复选框,并且有formvalidation。

你是否在视图中返回了你的对象?

修改

您无法在SelectList中选择多个值。更好的是使用List<SelectListItem>

我使用此代码。

    public static IList<SelectListItem> ToSelectList<T>(this IEnumerable<T> itemsToMap, Func<T, string> textProperty, Func<T, string> valueProperty, Predicate<T> isSelected) {
        var result = new List<SelectListItem>();

        foreach (var item in itemsToMap) {
            result.Add(new SelectListItem {
                Value = valueProperty(item),
                Text = textProperty(item),
                Selected = isSelected(item)
            });
        }
        return result;
    }

然后

ViewData["test"]= _Cust.Question18.ToSelectList(q=>q.Answer, q=>q.AnswerID, q=>someListOfAnswerIDS.Contains(q.AnswerID));


<%= Html.CheckBoxList("Question18", ViewData["test"] as List<SelectListItem>)%>

答案 1 :(得分:-1)

public ActionResult Step3() {  CustomerQuestion _Cust = new CustomerQuestion();  //通过siteid从数据库中检索答案  var Questions = QAService.GetAllAnswer(1);  var Questionscount = QAService.GetAllAnswer(1).Count();  _Cust.Question18 = Questions.Where(s =&gt; s.QuestionID == 18);  return View(_Cust);  }

这是视图

我绑定了此列表中数据库中的所有语言。 如果此页面上有一些验证错误,我想维持检查状态 复选框