有没有什么html助手方法可以在下拉列表中显示布尔值?
发布于 2010-01-27 16:31:50
为什么不使用Html.CheckBox()呢?
发布于 2011-11-07 15:52:40
这是一个旧的线程,但仍然在一些搜索的顶部。
您可以使用内置的DropDownListFor HTML Helper来完成此操作:
<%= Html.DropDownListFor(model => Model.MyBooleanProperty,new List<SelectListItem>(){ new SelectListItem(){ Text = "Yes", Value="True"}, new SelectListItem(){ Text = "No", Value="False"}})%>
您还可以实现自己的HTML Helper:
public static MvcHtmlString BooleanDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return BooleanDropdownListFor(htmlHelper, expression, null);
}
public static MvcHtmlString BooleanDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string EmptyText)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
bool? value = null;
if (metadata != null && metadata.Model != null)
{
if (metadata.Model is bool)
value = (bool)metadata.Model;
else if (metadata.Model.GetType() == typeof(bool?))
value = (bool?)metadata.Model;
}
List<SelectListItem> items = EmptyText != null ?
new List<SelectListItem>() { new SelectListItem() { Text = EmptyText, Value = "" }, new SelectListItem() { Text = "Yes", Value = "True", Selected = (value.HasValue && value.Value == true) }, new SelectListItem() { Text = "No", Value = "False", Selected = (value.HasValue && value.Value == false) } } :
new List<SelectListItem>() {new SelectListItem() { Text = "Yes", Value = "True", Selected = (value.HasValue && value.Value == true) }, new SelectListItem() { Text = "No", Value = "False", Selected = (value.HasValue && value.Value == false) } };
return htmlHelper.DropDownListFor(expression, items);
}
我建议在View Model上使用一个可以为空的bool属性,这样下拉列表就不会缺省为"false“或"true”。您可以很容易地用所需的属性标记视图模型,如果没有选择任何选项,则该属性将是handel。
发布于 2010-01-27 16:46:27
使用DropDownListFor帮助器。传递布尔值和包含要映射回布尔值的值的选择列表。
Model.MyBooleanList可能是一个带有Model.MyBoolean标题的选择列表{(“是”,true);("No",false)} selectlist只是您想要在视图上获取/设置的布尔值
<%= Html.DropDownListFor(m => m.MyBoolean, Model.MyBooleanList)%>
hth
https://stackoverflow.com/questions/2148545
复制