2016-05-06 52 views
1

如何從TagHelper ModelExpression中獲取MaxLength屬性?TagHelper從ForExpression獲取MaxLengthAttribute屬性

我曾經是能夠做到這一點的MVC 5

var member = expression.Body as MemberExpression; 

var maxLength = member?.Member 
    .GetCustomAttributes(typeof(MaxLengthAttribute), false) 
    .FirstOrDefault() as MaxLengthAttribute; 

我需要得到maxlength屬性是在模型 - 例如:

[MaxLength(5)] 
[Display(Name = "First Name")] 
public string FirstName { get; set; } 

的TagHelper無疑揭穿了ModelExpression .Metadata。 顯示名稱屬性和其他人,但不是的MaxLength或StringLength屬性

+0

您試圖訪問服務器上給定屬性上'MaxLength'屬性的值,對不對? – mariocatch

+0

是的,訪問屬性和值 – AdroitOldMan

回答

0

這裏得到任何驗證程序元數據的方法:

ForExpression變量通過HtmlAttributeName設置爲ModelExpression

[HtmlAttributeName("for")] 
    public ModelExpression ForExpression { get; set; } 

然後使用PropertyAttributes集合獲得所需的屬性

var maxLengthAttribute = ForExpression.Metadata.ValidatorMetadata.OfType<MaxLengthAttribute>().FirstOrDefault(); 

修改爲避免反射,請參閱(Exposing model attributes