1

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 属性は除きます。

4

1 に答える 1

1

バリデータメタデータを取得する方法は次のとおりです。

ForExpression 変数は、HtmlAttributeName を介して ModelExpression に設定されます

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

次に、PropertyAttributes コレクションを使用して目的のプロパティを取得します

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

リフレクションを回避するように変更されました。(モデル属性の公開)を参照してください。

于 2016-05-06T20:57:19.133 に答える