0

不知道发生了什么,但是当我在我的选择列表中指定一个选定的项目时,它没有被分配标记中的“选定”属性。

我的模型有一个名为 PlanningYears 的属性,它是一个包含 2011、2012、2013 和 2014 值的列表。

我希望选择当前年份,并且我尝试过:

@Html.DropDownListFor(m => m.PlanningYears , new SelectList(Model.PlanningYears, DateTime.Now.Year), null, null)

但无济于事。

这听起来可能与:http ://aspnet.codeplex.com/workitem/4932

谁能想到解决方法?

谢谢,

克里斯

4

2 回答 2

0
@{    
    var testModel = new int?[]
        {
            2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014
        };

    var current = DateTime.Now.Year;

    var list = testModel.Select(x => new SelectListItem
        {
            Text = x.ToString(),
            Value = x.ToString(),
            Selected = (x == current)
        });
}

@Html.DropDownList("testModel", list)

这是工作 :)

于 2013-03-18T17:21:08.600 回答
0

一般来说,对于任何下拉列表,您的视图模型中都需要两个属性:要显示的项目列表和将所选值绑定到的字符串或 int。

因此,在您的情况下,您的模型中需要以下两个属性:

public int PlanningYear { get; set; }
public List<SelectListItem> PlanningYears { get; set; }

DropDownListFor 帮助器没有重载来设置默认选定值,因此您应该在控制器中执行此操作:

viewModel.PlanningYear = DateTime.Now.Year;

然后你的助手在视图中

 @Html.DropDownListFor(x => x.PlanningYear, Model.PlanningYears)
于 2013-03-18T18:15:04.873 回答