自定义验证属性不起作用

时间:2014-07-25 13:50:36

标签: jquery asp.net-mvc-4 customvalidator

您好我有自定义属性

public class maxlengthattribute:ValidationAttribute
    {
        public readonly int max;
        public maxlengthattribute(int _max)
        {
            max = _max;
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                if (value.ToString().Length> max)
                {
                    var errorMessage = "Too many characters";
                    return new ValidationResult(errorMessage);
                }

            }
            return ValidationResult.Success;
        }
    }

我在以下模型中使用此自定义属性:

public partial class Registration
    {
        [Required(ErrorMessage="You must provide your name")]
        [maxlengthattribute(5)]
        public string Name { get; set; }
    }

但我的自定义属性无效。请帮帮我

1 个答案:

答案 0 :(得分:0)

正如评论所述,要使客户端验证工作还有很多工作要做。您的服务器端验证是1/2完成。首先,在您的视图中,您需要一个显示验证消息的地方

查看

@model MvcApplication1.Models.Registration

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    @Html.EditorFor(x => x.Name)
    @Html.ValidationMessageFor(x => x.Name)
    <input type ="submit"/>
}

然后,在模型状态无效的情况下,您的帖子需要重定向回您的视图。

<强>控制器

[HttpPost]
public ActionResult Index(Registration registration)
{
    if (!ModelState.IsValid)
        return View();
    //do stuff when valid
}

现在,当您不发布名称和/或名称长度超过5个字符时,它将回发到索引视图并显示错误。 (使用上面列出的模型和属性)