我在asp.net/mvc4/razor应用程序中有一个视图,我想使用dropdownlist控件编辑模型的值。我这样用它:
@Html.DropDownListFor(m => m.DateFormat, new SelectList(new [] {"mm/dd/yyyy", "dd/mm/yyyy"}))
DateFormat属性的值设置为模型中的其中一个值,但是当我加载视图时,html选择始终设置为第一个值。我错过了吗?
更新:
这让我疯了两天。最后我改变了属性的名称,它开始起作用了。我认为它与我在同一个键下存储在ViewData / ViewBag集合中的值有些冲突。我还不确定为什么。也许有人可以解释一下?
答案 0 :(得分:0)
尝试使用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)
))
答案 1 :(得分:0)
此代码未经测试
将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 ))