使用编辑器模板处理可空类型

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

我开发了一个编辑器模板,它采用布尔类型并创建一个下拉列表,将truefalse默认值更改为SiNo.现在,当我部署应用程序时,我没有意识到booleanNullable<boolean>我的编辑器模板(boolean.cshtml)的名称相同并受到影响.现在我不想要这个,我想修改它的行为editorfor,只有当模型的数据类型Nullable<boolean>不是它的布尔值时.我怎么能处理这个?

 @model Nullable<bool>

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

}


@Html.DropDownListFor( model => model.Value, listItems)
Run Code Online (Sandbox Code Playgroud)

Inf*_*oop 14

您无法使用相同的编辑器模板阻止它们.但您可以在编辑器模板中处理它.你有:

ViewData.ModelMetadata.IsNullableValueType
Run Code Online (Sandbox Code Playgroud)

如果您阅读本文,您实际上可以看到默认模板用于在两个不同的渲染之间切换的内容.只是偷了它:

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html