2013-07-23 71 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

沒問題。無論如何,這是一個很好的問題,有時候只需要另一雙眼睛。 –

相關問題