如何从强类型自定义Html Helper访问模型中属性的属性?

时间:2011-03-18 04:27:12

标签: c# asp.net asp.net-mvc html-helper

我有一个强类型的视图,其模型的类型为LogOnModelLogOnModel具有类似这样的属性:

[Required(ErrorMessage = "Please enter your password")]
[DataType(DataType.Password)]
[Display(Name = "Password", Description = "Your secreet password")]
public string Password { get; set; }

所有这些都有Display anotation Display.Descripion属性集。 我想创建HtmlHelper扩展方法,输出<span>包含Display.Description属性的值。

例如,如果我调用我的扩展方法DescriptionFor而不是此代码:

<%: Html.DescriptionFor(m => m.Password) %>

应该生成以下html:<span>Your secreet password</span>

感谢所有想法和代码。

1 个答案:

答案 0 :(得分:1)

请参阅此问题:Extract Display name and description Attribute from within a HTML helper

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; // will equal "Your secreet password"
    var name = metadata.DisplayName; // will equal "Password"
    // TODO: do something with the name and the description
    ...
}

MSDN:ModelMetadata Class