C# 修改布尔类型的MVC默认行为
我定义了这个editorTemplate来修改布尔类型的行为,我的问题是当该类型可为空时,我想创建一个组合来更改默认值,使其符合我的要求,但我不知道如何选择来自模型的值 例如,如果值为C# 修改布尔类型的MVC默认行为,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我定义了这个editorTemplate来修改布尔类型的行为,我的问题是当该类型可为空时,我想创建一个组合来更改默认值,使其符合我的要求,但我不知道如何选择来自模型的值 例如,如果值为true我希望使用SI值选择下拉列表,使用NO选择false。现在,我知道我可以像这样获得模型的值model.value,但我不知道如何根据模型传递到seleclist。这是我的编辑模板 @model Nullable<bool> @{ var listItems = new[]{
true
我希望使用SI
值选择下拉列表,使用NO
选择false。现在,我知道我可以像这样获得模型的值model.value
,但我不知道如何根据模型传递到seleclist。这是我的编辑模板
@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)
}
@模型可为空
@{
var listItems=new[]{
新建SelectListItem{Value=“null”,Text=“Sin Valor”},
新建SelectListItem{Value=“true”,Text=“Si”},
新建SelectListItem{Value=“false”,Text=“No”}
};
}
@if(ViewData.ModelMetadata.IsNullableValueType)
{
@Html.DropDownList(“,listItems)
}
其他的
{
@复选框(“,ViewData.Model.Value)
}
您可以在SelectListItem
上进行设置:
@模型可为空
@{
var listItems=new[]{
新建SelectListItem{Value=“null”,Text=“Sin Valor”,Selected=!Model.HasValue},
新建SelectListItem{Value=“true”,Text=“Si”,Selected=Model.HasValue&&Model.Value},
新建SelectListItem{Value=“false”,Text=“No”,Selected=Model.HasValue&&!Model.Value}
};
}
@if(ViewData.ModelMetadata.IsNullableValueType)
{
@Html.DropDownList(“,listItems)
}
其他的
{
@复选框(“,ViewData.Model.Value)
}
我在想,你会如何达到复选框场景?编辑器模板仅适用于可为空的类型。不过,我可能错过了一些东西。
@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)
}