我试图确保我的 cms 中的每个项目都有一个唯一的 url。
该模型已成为 IValidatableObject,我正在使用下面的验证方法。
我遇到的麻烦是辨别项目是正在创建(url 不得与任何现有项目匹配)还是正在编辑(url 不得与自身以外的任何项目匹配)。
我怎么能这样做......我什至以正确的方式接近这个?
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
DataContext db = new DataContext();
string itemContainingURL = db.CMSPages.Where(c => c.URL == URL).Select(c => c.Title).SingleOrDefault();
if (!string.IsNullOrEmpty(itemContainingURL))
{
yield return new ValidationResult(String.Format("URL should be unique, but it already exists for item: {0}", itemContainingURL), new[] { "URL" });
}
}