ASP.NET MVC:将EditorFor与枚举的默认模板一起使用

问题描述

|| 我已经编写了一个EnumDropDownFor()帮助器,我想与EditorFor()结合使用。我只是刚刚开始使用EditorFor(),所以对于如何选择模板有些困惑。 我的Enum.cshtml编辑器模板如下:
<div class=\"editor-label\">
    @Html.LabelFor(m => m)
</div>
<div class=\"editor-field\">     
    @Html.EnumDropDownListFor(m => m)
    @Html.ValidationMessageFor(m => m)
</div>
缺少显式定义要使用的模板的方法,是否有任何方法可以将枚举传递给EditorFor()时使用认模板?     

解决方法

您可以查看Brad Wilson的博客文章,了解ASP.NET MVC中使用的默认模板。当您拥有Enum类型的model属性时,它就是要呈现的字符串模板。因此,您可以像这样自定义此字符串编辑器模板:
~/Views/Shared/EditorTemplates/String.cshtml
@model object
@if (Model is Enum)
{
    <div class=\"editor-label\">
        @Html.LabelFor(m => m)
    </div>
    <div class=\"editor-field\">     
        @Html.EnumDropDownListFor(m => m)
        @Html.ValidationMessageFor(m => m)
    </div>
}
else
{
    @Html.TextBox(
        \"\",ViewData.TemplateInfo.FormattedModelValue,new { @class = \"text-box single-line\" }
    )
}
然后您认为:
@Html.EditorFor(x => x.SomeEnumProperty)
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...