HTML Select控件在使用Razor DropDownListFor生成时没有选定的值



我在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 ))

最新更新