我在asp.net/mvc4/razor应用程序中有一个视图,我想在其中使用dropdownlist控件编辑模型的值。我是这样使用的:
@Html.DropDownListFor(m => m.DateFormat, new SelectList(new [] {"mm/dd/yyyy", "dd/mm/yyyy"}))
DateFormat属性的值被设置为模型中的其中一个值,但当我加载视图时,html选择总是被设置为第一个值。我是不是错过了什么?
更新:
这让我发疯了两天。最后,我更改了房地产的名称,它开始工作。我认为它在某种程度上与我存储在ViewData/ViewBag集合中的同一密钥下的值相冲突。我还不知道为什么。也许有人能解释一下?
试试SelectList
,这样可以定义文本和值以及所选项目。
@(Html.DropDownListFor(m => m.DateFormat, new SelectList
(
new List<Object> {
new {
value = "mm/dd/yyyy", text = "mm/dd/yyyy"
},
new {
value = "dd/mm/yyyy", text = "dd/mm/yyyy"
}
}, "value", "text", Model.DateFormat)
))
此代码未经测试的
使SelectList
成为模型的好友属性。
public class MyModel(){
prop DateTime MyDate {get;set;};
prop SelectList SelectDates {get;set;}
}
然后在选择日期后填充SelectList
(记住每次构建模型时都要这样做):
SelectDates = dates.Select(d => new SelectListItem
{
Value = d.ToString(),
Text = d.ToString(),
Selected = d == MyDate
})
然后在构建下拉列表时使用属性:
@Html.DropDownListFor(m => m.DateFormat, Model.SelectDates ))