2011-03-18 138 views
0

我有一个强烈类型的视图,其型号为LogOnModel。这LogOnModel已anotated性质类似这样的:如何从强类型自定义HtmlHelper访问模型中属性的属性?

[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扩展方法,该方法将输出包含Display.Description属性值的<span>

因此,举例来说,如果我打电话给我的扩展方法DescriptionFor比这个代码:

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

应该产生下面的HTML:<span>Your secreet password</span>

感谢所有的想法和代码。

+0

我会非常高兴,如果你留下了评论,如果事情是不是清楚我的问题。谢谢。 – drasto 2011-03-18 05:22:04

回答

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