如何从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属性
答案 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)