【问题标题】:How to create a generic MVC3 editor template?如何创建一个通用的 MVC3 编辑器模板?
【发布时间】:2012-03-27 15:45:36
【问题描述】:

我在我的模型模板中广泛使用以下 code-sn-p。

<div class="control-group">
    @Html.LabelFor(model => model.FirstName)
    <div class="controls">
        @Html.TextBoxFor(model => model.FirstName, new { @class = "span3" })
        @Html.ValidationMessageFor(model => model.FirstName)
    </div>
</div>

是否可以将其概括地封装在编辑器模板中,以便我可以使用 Html.EditorFor(...) 而不诉诸自定义扩展?

【问题讨论】:

    标签: asp.net-mvc-3 templates


    【解决方案1】:

    是否可以将其通用地封装在编辑器模板中 所以我可以使用 Html.EditorFor(...) 而不诉诸自定义 扩展?

    当然:

    ~/Views/Shared/EditorTemplates/Foo.cshtml:

    <div class="control-group">
        @Html.Label("")
        <div class="controls">
            @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "span3" })
            @Html.ValidationMessage("")
        </div>
    </div>
    

    然后:

    @Html.EditorFor(x => x.FirstName, "Foo")
    

    或:

    [UIHint("Foo")]
    pubilc string FirstName { get; set; }
    

    然后:

    @Html.EditorFor(x => x.FirstName)
    

    【讨论】:

    • 您可能不需要最后一个示例中的"Foo"。我不知道你可以像这样使用("")...另外,恭喜几乎达到300k。
    • @Kobi,是的,我刚刚意识到并解决了这个问题。
    • 这是一个非常酷的技巧!正是我想要的。谢谢!
    • 此外,如果您在许多局部视图中使用控制组语法,您可以将其抽象为一个方法:stackoverflow.com/questions/4083147/…
    • 我会添加:[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 我也会使用 MV6:blog.emikek.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多