1

次の署名を持つカスタムHTMLヘルパーがあります。

public static MvcHtmlString TextBoxFor<TModel,
    TProperty>(this HtmlHelper<TModel> helper,
    Expression<Func<TModel, TProperty>> property)
{
    var htmlAttributes = new Dictionary<string, object>();

    // ....

    return helper.TextBoxFor(property, htmlAttributes);
}

ここに属性を実装したいと思いplaceholderます。この属性は、このコントロールのラベルに設定する必要があります。ラベルは、文字列定数またはプロパティの[Display]属性に指定された文字列のいずれかです。

このヘルパー関数からこのラベルを取得する方法はありますか?

4

1 に答える 1

0

これはうまくいくようです:

ModelMetadata metadata = ModelMetadata.FromLambdaExpression(property, helper.ViewData);
string htmlFieldName = ExpressionHelper.GetExpressionText(property);
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (!String.IsNullOrWhiteSpace(labelText))
    // labelText contains the label
于 2012-06-05T18:47:14.540 に答える