1. ホーム
  2. c#

DisplayAttribute.Descriptionの属性値を表示するにはどうしたらよいですか?

2023-09-21 23:03:38

質問内容

モデルクラスがあり、このようなプロパティを持っています。

[Display(Name = "Phone", Description="Hello World!")]
public string Phone1 { get; set; }

私のビューでラベルを表示し、入力用のテキストボックスをレンダリングするのはとても簡単です。

@Html.LabelFor(model => model.Organization.Phone1)
@Html.EditorFor(model => model.Organization.Phone1)
@Html.ValidationMessageFor(model => model.Organization.Phone1)

しかし、Descriptionアノテーション属性の値、つまり "Hello World!" をどのようにレンダリングすればいいのでしょうか?

どのように解決するのですか?

結局、こんな感じのヘルパーになりました。

using System;
using System.Linq.Expressions;
using System.Web.Mvc;

public static class MvcHtmlHelpers
{
    public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
        var description = metadata.Description;

        return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", description));
    }
}

正しい方向に導いてくれた人たちに感謝します :)