我有Category个模型,有名称字段,每个类别的名称必须是唯一的.我已经做了验证,当我try 创建新类别时,它可以工作,但我在try 编辑它时遇到了问题.现在,它只是判断名称是否存在,当然,当我试图编辑同一个类别时,它确实存在.
模型
[Validator(typeof(CategoryValidator))]
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
virtual public ICollection<Image> Images { get; set; }
}
public class CategoryValidator : AbstractValidator<Category>
{
public CategoryValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Category name is required.").Must(UniqueName).WithMessage("This category name already exists.");
}
private bool UniqueName(string name)
{
ProjecteDataContext _db = new ProjecteDataContext();
var category = _db.Categories.Where(x => x.Name.ToLower() == name.ToLower()).SingleOrDefault();
if (category == null) return true;
return false;
}
}
正如你们所看到的,我有UniqueName(string name)
个函数,但我如何传递ID,或者整个模型,这样我就可以判断它是否和我试图编辑的模型的ID相同,然后传递.我怎么能通过像UniqueName(string name, int? id)
这样的考试呢?我今天才发现了FluentValidation,我搞不懂.