首页 新闻 会员 周边

mvc 自定义注解

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-04-28 08:58

 public class MaxWordsAttribute:ValidationAttribute
    {
      
        public MaxWordsAttribute(int maxWords):base("{0} has too many words.")
        {
          _maxWords=maxWords;
        }
        protected override ValidationResult IsValid(object value,ValidationContext validationContext)
        {
            if (value != null)
            {
                var valueAsString = value.ToString();
                if (valueAsString.Length > _maxWords)
                {
                    var errorMessage = FormatErrorMessage(validationContext.DisplayName);
                    return new ValidationResult(errorMessage);
                }
            }
            return ValidationResult.Success;
        }
        public readonly int _maxWords;
      
    }

 

使用:

  [MaxWords(10,ErrorMessage="too many words")]
        public string FisrtName { get; set; }

 

不起作用为什么?

奔*跑的主页 奔*跑 | 初学一级 | 园豆:72
提问于:2013-03-08 17:35
< >
分享
所有回答(3)
0

ValidationAttribute 怎么触发的

Qlin | 园豆:2403 (老鸟四级) | 2013-03-08 17:47

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("create","order",FormMethod.Post)
) {
@Html.ValidationSummary(true)
<table>
<tr>
<td>FirstName</td><td>
@Html.EditorFor(m=>m.FisrtName)
@Html.ValidationMessageFor(m=>m.FisrtName)
 </td>

支持(0) 反对(0) 奔*跑 | 园豆:72 (初学一级) | 2013-03-08 23:29
0

@Html.ValidationSummary(true)改为 @Html.ValidationSummary()试试看

btw:你的这个需求,不必要自定义,用标准的StringLength

陈希章 | 园豆:2538 (老鸟四级) | 2013-03-09 19:22
0

不知道你是不是想要客户端起作用,那样的话,重写客户端验证即可。

虔城墨客 | 园豆:185 (初学一级) | 2013-04-03 08:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册