2013-03-18 117 views
0

不確定發生了什麼,但是當我在選擇列表中指定選定項目時,它沒有被分配標記中的「selected」屬性。SelectList未選擇所選項目

我的模型有一個名爲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
@{  
    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) 

它的工作:)

+0

X沒有一個.Year()方法,x是可空的int。我嘗試以下,但它沒有工作: @ {VAR 名單= Model.PlanningYears.Select(X =>新SelectListItem { 文本= x.ToString(), 值= x.ToString() , Selected = x == DateTime.Now.Year })。ToList(); } @ Html.DropDownListFor(m => m.PlanningYears,list) – 2013-03-18 17:27:31

+0

我編輯過,檢查這個 – hVostt 2013-03-18 17:35:20

+0

它確實有效。我想有沒有辦法使用DropDownListFor幫手選擇一個項目?我們需要更改項目選擇的下拉菜單的名稱屬性才能正常工作?對我來說似乎很奇怪...... – 2013-03-18 17:43:14

0

一般來說,你需要在任何下拉列表中選擇您的視圖模型的兩個屬性:項目列表顯示和string或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)