SelectList未选择所选项目

时间:2013-03-18 17:15:03

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

不确定发生了什么,但是当我在选择列表中指定所选项目时,它没有在标记中分配“selected”属性。

我的模型有一个名为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

有关

有人能想到一个解决方法吗?

谢谢,

克里斯

2 个答案:

答案 0 :(得分: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)

它的工作:)

答案 1 :(得分: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)