2

次のようなプロパティを持つビューモデルがあるとします。

[Required]
[Display(Name = "Your name")]
public string Name { get; set; }

次のようなEditorForテンプレートを作成したいと思います。

<label>
    @Model.DisplayName
    @if (Model.Required)
    {
        <span class="required">*</span>
    }
<label>
@Html.TextBoxFor(model => model)

明らかに、上記は失敗します(Model.RequiredModel.DisplayName)が、私はそれを私がやろうとしていることの例として使用しています。

これは可能ですか?

前もって感謝します。

4

2 に答える 2

3

モデルViewDataのメタデータは から入手できます。

ViewData.ModelMetadata.GetDisplayName()

于 2011-08-04T22:02:20.987 に答える
3

[Required] 属性が存在するかどうかを判断するヘルパー メソッドを作成することで、このソリューションはうまく機能しました。

public static MvcHtmlString RequiredSymbolFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TProperty>> expression,
    string symbol = "*",
    string cssClass = "editor-field-required")
{
    ModelMetadata modelMetadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);

    if (modelMetadata.IsRequired)
    {
        var builder = new TagBuilder("span");
        builder.AddCssClass(cssClass);
        builder.InnerHtml = symbol;

        return new MvcHtmlString(builder.ToString(TagRenderMode.Normal));
    }

    return new MvcHtmlString("");
}

http://www.kristofclaes.be/blog/2011/08/26/an-htmlhelper-to-display-if-a-field-is-required-or-not-in-aspnet-mvc-3/

https://web.archive.org/web/20130711024856/http://www.kristofclaes.be/blog/2011/08/26/an-htmlhelper-to-display-if-a-field-is-required- or-not-in-aspnet-mvc-3/

于 2011-09-18T12:30:34.583 に答える