模型数据注释的自定义验证属性

时间:2014-05-22 01:45:18

标签: asp.net-mvc data-annotations

是否有任何方法可以自定义数据注释,就像在模型中添加[Uppercase],[Lowercase],[ProperCase]注释一样,在上述情况下转换模型。  我尝试过使用modelbinder,它只设置一个数据注释我想要实现的是拥有这样的模型:

[Display(Name="Agent Code", Prompt =  "Agent Code")]
[CustomAttributes(Case="Uppecase", IsTrim=false)]
[Required(AllowEmptyStrings = false, ErrorMessage = ModelConstants.L_MSG_REQUIRED)]
[StringLength(10)]
public string agent_cd { get; set; }

如何实现我想要的输出的任何想法或建议??

1 个答案:

答案 0 :(得分:3)

有办法做到这一点,创建自己的注释,如下所示:

namespace System.ComponentModel.DataAnnotations
{
    public class MakeMeUpperCase : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            try
            {
                validationContext.ObjectType.GetProperty(validationContext.DisplayName)
                .SetValue(validationContext.ObjectInstance, value.ToString().ToUpper() , null);
            }
            catch (Exception)
            {
            }
            return null;
      }
   }
}

你的财产:

[MakeMeUpperCase]
public string TurnUpper { get; set; }