TagHelper从ForExpression获取MaxLengthAttribute属性

时间:2016-05-06 03:37:06

标签: c# asp.net-mvc asp.net-core-mvc tag-helpers

如何从TagHelper ModelExpression中获取MaxLength属性?

我曾经能够在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。 DisplayName 属性和其他属性,但没有公开MaxLength或StringLength属性

1 个答案:

答案 0 :(得分:0)

以下是获取任何Validator元数据的方法:

ForExpression变量通过HtmlAttributeName

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

然后使用PropertyAttributes集合来获取所需的属性

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

为避免反射而修改,请参阅(Exposing model attributes

相关问题