基本上,ASP.NET MVC 有一些默认模板(你可以在这里阅读)。
如果您愿意,可以添加自己的 EditorTemplate,ASP.NET MVC 将使用它而不是默认值。为此,您应该将文件“Boolean.{your-view-engine-extension}”(例如:“Boolean.aspx”)放入~/Views/ControllerName/EditorTemplates/或~/Views/Shared/EditorTemplates/和用您自己的功能覆盖它。
这是 Boolean 的默认编辑器,您可以对其进行增强:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script runat="server">
private List<SelectListItem> TriStateValues {
get {
return new List<SelectListItem> {
new SelectListItem { Text = "Not Set", Value = String.Empty, Selected = !Value.HasValue },
new SelectListItem { Text = "True", Value = "true", Selected = Value.HasValue && Value.Value },
new SelectListItem { Text = "False", Value = "false", Selected = Value.HasValue && !Value.Value },
};
}
}
private bool? Value {
get {
if (ViewData.Model == null) {
return null;
}
return Convert.ToBoolean(ViewData.Model, System.Globalization.CultureInfo.InvariantCulture);
}
}
</script>
<% if (ViewData.ModelMetadata.IsNullableValueType) { %>
<%= Html.DropDownList("", TriStateValues, new { @class = "list-box tri-state" }) %>
<% } else { %>
<%= Html.CheckBox("", Value ?? false, new { @class = "check-box" }) %>
<% } %>