修改布尔类型的MVC默认行为

Jor*_*rge 3 c# razor asp.net-mvc-3

我定义了这个editorTemplate来修改boolean类型的行为,我的问题是当类型可以为空时我想创建一个组合来改变默认值,到我想要的,但我不知道如何选择值来自模特.

例如,如果值是,true我希望使用SIvalue 选择下拉列表,使用false NO.现在,我知道我可以得到这样的模型的价值,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)
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 5

您可以在以下位置设置SelectListItem:http://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)
}
Run Code Online (Sandbox Code Playgroud)