您好我有自定义属性
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; }
}
但我的自定义属性无效。请帮帮我
答案 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个字符时,它将回发到索引视图并显示错误。 (使用上面列出的模型和属性)