不确定发生了什么,但是当我在选择列表中指定所选项目时,它没有在标记中分配“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
有关有人能想到一个解决方法吗?
谢谢,
克里斯
答案 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)