2011-11-30 48 views
3

我定義了這個editorTemplate來修改一個布爾類型的行爲,我的問題是當類型爲空時我想創建一個組合來改變默認值,我想要的,但我不知道如何選擇來自模型的值。修改布爾類型的MVC默認行爲

例如,如果值爲true我希望使用SI值選擇下拉列表,並且使用NO爲false。現在,我知道我可以像這樣得到模型的價值Model.Value,但我不知道如何傳遞給選擇列表,具體取決於模型。這裏是我的editorTemplate

@model Nullable<bool> 

@{ 
    var listItems = new[]{ 
     new SelectListItem { Value = "null", Text = "Sin Valor" }, 
     new SelectListItem { Value = "true", Text = "Si" }, 
     new SelectListItem { Value = "false", Text = "No"} 
    }; 
} 

@if (ViewData.ModelMetadata.IsNullableValueType) 
{ 

    @Html.DropDownList("", listItems) 
} 
else 
{ 
    @Html.CheckBox("", ViewData.Model.Value) 
} 

回答

5

您可以設置這個就SelectListItemhttp://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem%28v=VS.100%29.aspx

@model Nullable<bool> 

@{ 
    var listItems = new[]{ 
     new SelectListItem { Value = "null", Text = "Sin Valor", Selected = !Model.HasValue }, 
     new SelectListItem { Value = "true", Text = "Si", Selected = Model.HasValue && Model.Value }, 
     new SelectListItem { Value = "false", Text = "No", Selected = Model.HasValue && !Model.Value} 
    }; 
} 

@if (ViewData.ModelMetadata.IsNullableValueType) 
{ 

    @Html.DropDownList("", listItems) 
} 
else 
{ 
    @Html.CheckBox("", ViewData.Model.Value) 
} 
+1

我想你會怎麼達到的複選框的情況?您的編輯器模板僅適用於可以爲空的類型。不過,我可能會在這裏錯過一些東西。 – Roman