Html.DropDownListFor不绑定布尔SelectList

时间:2011-10-13 07:22:41

标签: asp.net-mvc-3 model-binding html.dropdownlistfor selectlistitem

我有这个代码构造一个选择列表作为布尔响应

var responseList = new List<SelectListItem>();
responseList.Add(new SelectListItem { Text = "Going", Value = bool.TrueString});
responseList.Add(new SelectListItem { Text = "Not Going", Value = bool.FalseString });
ViewData[ViewDataKeys.ResponseTo] = vatOptionList;

在我看来,我使用下面的下拉列表帮助器。

@Html.DropDownListFor(m => m.ResponseTo, (IEnumerable<SelectListItem>)ViewData[ViewDataKeys.ResponseTo], "--Select--")

这是我的Model类的属性:

[Display(Name = "Response To")]
public bool ResponseTo { get; set; }

我的问题是我的model.ResponseTo的值是什么,下拉列表总是选择可选值。

我尝试使用复选框助手,但令人惊讶的是它似乎没有被检查过,但是当我检查元素时,复选框值为“true”

我尝试使用文本框助手,它显示“真实”文本,我认为我的模型有价值,它只是没有绑定到下拉列表或复选框。我需要使用下拉列表。我错过了什么?

1 个答案:

答案 0 :(得分:4)

刚试过这个,它有效:

在你的行动方法中:

var selectListItems = new List<SelectListItem>();
selectListItems.Add(new SelectListItem { Text = "Going", Value = bool.TrueString });
selectListItems.Add(new SelectListItem { Text = "Not going", Value = bool.FalseString });
ViewBag.MySelectList = new SelectList(selectListItems, "Value", "Text", viewModel.IsGoing);

在您看来:

@Html.DropDownList("IsGoing", (SelectList) ViewBag.MySelectList)