加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC:使用EditorFor()和枚举的默认模板

发布时间:2020-12-16 00:35:00 所属栏目:asp.Net 来源:网络整理
导读:我已经编写了一个EnumDropDownFor()帮助器,我想和EditorFor()一起使用。我刚刚开始使用EditorFor(),所以有点混淆如何选择模板。 我的Enum.cshtml编辑器模板如下: div class="editor-label" @Html.LabelFor(m = m)/divdiv class="editor-field" @Html.Enum
我已经编写了一个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中使用的 default templates的博文。当你有一个类型为Enum的model属性时,它是被渲染的字符串模板。所以你可以自定义这样的字符串编辑器模板:

?/查看/共享/ 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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读