2013-07-23 72 views
2

我试图确保我的cms中的每个项目都有唯一的网址。如何在我的验证方法中区分编辑和创建新项目?

该模型已被制成一个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" }); 
     } 

    } 

回答

1

重要吗?只需测试存在共享URL的不同ID的项目,并且您可以涵盖这两种情况。

示例伪代码:

bool IsUnique() 
{ 
    return !repository.Any(x => x.ID != this.ID && x.URL == this.URL); 
} 
+0

当然,这是第二个问题,愚蠢今天我问。 : - $谢谢 –

+0

没问题。无论如何,这是一个很好的问题,有时候只需要另一双眼睛。 –

相关问题