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

时间:2014-04-17 21:52:00

标签: asp.net .net asp.net-mvc-4 razor

我在asp.net/mvc4/razor应用程序中有一个视图,我想使用dropdownlist控件编辑模型的值。我这样用它:

@Html.DropDownListFor(m => m.DateFormat, new SelectList(new [] {"mm/dd/yyyy", "dd/mm/yyyy"}))

DateFormat属性的值设置为模型中的其中一个值,但是当我加载视图时,html选择始终设置为第一个值。我错过了吗?

更新:

这让我疯了两天。最后我改变了属性的名称,它开始起作用了。我认为它与我在同一个键下存储在ViewData / ViewBag集合中的值有些冲突。我还不确定为什么。也许有人可以解释一下?

2 个答案:

答案 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 ))