0

デフォルトのDisplayForヘルパーは、エスケープされたテキストをページにスローするだけです。表示するプロパティごとにカスタムテンプレートを作成する<span>か、作成せずにデフォルトをラップする方法はありますか?吐き出す代わりに<div>DisplayFor

Foo

吐き出したい

<span>Foo</span>

カスタムのものを作るための記事をたくさん見ました。私はそれらをかなり頻繁に使用します。しかし、私の表示内容のほとんどは、コンテンツがタグでラップされている単純なCSSで処理したいだけであり、これを行う方法、または可能であっても、参照を見つけることができません。

4

2 に答える 2

2

確かに「オブジェクト」テンプレートを使用し、ViewData.ModelMetadata.Properties オブジェクトテンプレートから次のようにオーバーライドします-ViewBagを使用してHtml.Display

object.cshtmlという名前の表示テンプレートを使用することで、多数のプロパティを持つすべてのタイプに適用できます。

主な詳細を含むbradwilsonsエントリへのリンクがあります http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

于 2012-06-24T23:44:02.617 に答える
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);
于 2012-06-24T23:43:09.807 に答える