模型:
using System.ComponentModel.DataAnnotations;
using MySite.Validators;
namespace MySite.Models
{
public class AddItem
{
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[TagValidation(ErrorMessage = "At least one tag is required")]
public virtual List<int> Tags { get; set; }
}
}
看法:
@using (Html.BeginForm()) {
...
<div class="editor-label">
@Html.LabelFor(model => model.Tags, "Tags")
</div>
<div class="editor-field">
@Html.ListBox("Tags")
@Html.ValidationMessageFor(model => model.Tags)
</div>
...
}
验证器:
using System.ComponentModel.DataAnnotations;
namespace MySite.Validators
{
public class TagValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
}
我希望我的验证器一开始就返回 false,只是为了确保它正常工作。但是,如果我没有从列表中选择任何标签并提交表单,它会尝试处理它而不会出现任何错误,表明我需要先选择一个标签。
我在这里做错了什么?