ASP.NET MVC:将 EditorFor() 与枚举的默认模板结合使用

发布于 2024-11-01 20:54:45 字数 429 浏览 0 评论 0 原文

我编写了一个 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>

缺少显式定义要使用的模板,是否有任何方法可以拥有一个在将 Enum 传递给 EditorFor() 时使用的默认模板?

I've written an EnumDropDownFor() helper which I want to use in conjunction with EditorFor(). I've only just started using EditorFor() so am a little bit confused about how the template is chosen.

My Enum.cshtml editor template is below:

<div class="editor-label">
    @Html.LabelFor(m => m)
</div>
<div class="editor-field">     
    @Html.EnumDropDownListFor(m => m)
    @Html.ValidationMessageFor(m => m)
</div>

Short of explicitly defining the template to use, is there any way to have a default template which is used whenever an Enum is passed in to an EditorFor()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高跟鞋的旋律 2024-11-08 20:54:45

您可以查看 Brad Wilson 关于 默认模板。当您有 Enum 类型的模型属性时,它就是正在呈现的字符串模板。因此,您可以像这样自定义此字符串编辑器模板:

~/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)

You may checkout Brad Wilson's blog post about the default templates used in ASP.NET MVC. When you have a model property of type Enum it is the string template that is being rendered. So you could customize this string editor template like this:

~/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" }
    )
}

and then in your view simply:

@Html.EditorFor(x => x.SomeEnumProperty)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文