2011-10-13 155 views
0

我試圖實現編輯器模板Nullable<bool>而不是顯示爲true或false,出現「Si」或「No」。這是我迄今爲止所擁有的。創建一個編輯器模板

@model Nullable<bool> 

@{ 
    var listItems = new List<System.Web.UI.WebControls.ListItem>(); 
    listItems.Add(new System.Web.UI.WebControls.ListItem{Text="Si", Value="true"}); 
    listItems.Add(new System.Web.UI.WebControls.ListItem{Text="No", Value="false"});   
} 


@Html.DropDownList(model => model.Value, listItems) 

而且它會拋出這個錯誤Cannot convert lambda expression to type 'string' because it is not a delegate type。我看不到錯誤我做錯了什麼?

+0

嘗試使用括號'new ListItem(){Text =「Si」,Value =「true」}' – Andre

+1

使用對象初始化時,括號無關緊要。 – Luke

回答

3

DropDownList幫助程序將字符串作爲第一個參數,而不是lambda表達式。使用DropDownListFor並確保第二個參數是一個IEnumerable<SelectListItem>,你的代碼是不是:

@model Nullable<bool> 
@{ 
    var listItems = new[] 
    { 
     new SelectListItem { Value = "true", Text = "Si" }, 
     new SelectListItem { Value = "false", Text = "No" } 
    }; 
} 
@Html.DropDownListFor(model => model.Value, listItems) 

你可以忘記一個ASP.NET MVC應用程序有關System.Web.UI.WebControls.ListItem。這是一個經典的WebForms的東西。