MVC3:设置默认的DisplayFor模板

时间:2012-06-24 23:17:21

标签: asp.net-mvc asp.net-mvc-3

默认的DisplayFor帮助程序只会在页面上抛出一些转义文本。有没有办法将默认值包装在<span><div>中,而无需为要显示的每个属性编写自定义DisplayFor模板?而不是它喷出

Foo

我希望它吐出来

<span>Foo</span>

我看过很多关于制作自定义内容的文章;我经常使用它们。但是我的大部分显示内容我只想用简单的CSS来处理,其中内容包含在标签中,我找不到如何执行此操作的参考,或者即使它是可能的。

2 个答案:

答案 0 :(得分:2)

确保使用&#39;对象&#39;从ViewData.ModelMetadata.Properties中的模板和覆盖如下 Object template - Html.Display using ViewBag

通过将名为object.cshtml的显示模板应用于具有可数属性的所有类型

指向brad wilsons条目的链接包含主要详细信息 http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

答案 1 :(得分:1)

您可以创建自己的HtmlHelper扩展程序

public static class HtmlHelperExtensions
{
    public static MvcHtmlString EnhancedDisplayFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
    {
        var stringBuilder = new StringBuilder("<span>");
        stringBuilder.Append(html.DisplayFor(expression));
        stringBuilder.Append("</span>");
        return new MvcHtmlString(stringBuilder.ToString());
    }
}

然后像这样使用它

@Html.EnhancedDisplayFor(model => model.MyProperty);