【发布时间】:2017-05-05 17:59:14
【问题描述】:
我有以下 ViewModel
public class ContactAddViewModel
{
string _title;
public ContactAddViewModel()
{
var titles = new List<SelectListItem>()
{
new SelectListItem() { Value = "Mr", Text= "Mr" },
new SelectListItem() { Value= "Miss", Text="Miss" },
new SelectListItem() { Value = "Mrs", Text= "Mrs" },
new SelectListItem() { Value = "Ms", Text = "Ms" },
new SelectListItem() { Value = "Dr", Text = "Dr" }
};
Titles = titles;
}
[Required]
[Display(Name = "Title")]
public string Title { get; set; }
public IEnumerable<SelectListItem> Titles { get; set; }
...
在控制器中调用:
var ctc = new ContactAddViewModel()
{
Title = contact.Title.Trim()
};
return View(ctc);
然后在视图中:
<div class="form-group col-md-2">
@Html.LabelFor(m => m.Title)
@Html.DropDownListFor(m => m.Title, Model.Titles, string.Empty, new { @class = "form-control placeholder-no-fix" })
@Html.ValidationMessageFor(m => m.Title, "", new { @class = "help-block" })
</div>
但是没有选择任何选项。我已经验证了标题是正确的,我什至尝试过手动设置:
[Required]
[Display(Name = "Title")]
public string Title
{
get { return _title; }
set
{
_title = value;
foreach(var t in Titles)
{
if(t.Value == _title)
{
t.Selected = true;
}
}
}
}
在视图中调试时,正确的SelectListItem 将Selected 属性设置为true,但在最终标记中并未选择它。
我哪里错了? - 我在模型中有其他正确绑定的下拉列表(如果有任何区别,则具有数值)。
【问题讨论】: