Архитектура проверки ASP.NET MVC для проверенных значений БД - PullRequest
0 голосов
/ 25 мая 2011

Допустим, у меня есть такой класс

public class Blog{
  [Key]
  public int ID{get;set;}

  //these can only be tags that are in the tags db table
  IEnumerable<string> Tags{get;set;}

  //validation pseudocode to illustrate issue
  public bool IsValid() {

    //this is my issue-- how do i get my db context/repository 
    //into my validation logic for this class? i need it
    var goodTags=db.Tags.Select(i=>i.Name);

    //if this tag isn't a "goodTag", then this shouldnt validate
    Tags.ForEach(i=> {

       if(!goodTags.Contains(i))
          return false;
    });
 }
 }

Как проверить, что строка, содержащаяся в тегах, находится в таблице базы данных тегов, не помещая логику доступа к данным в модель?Я использую MVC3.Как ты это сделал?

Спасибо!

1 Ответ

1 голос
/ 25 мая 2011

Используйте объект IInvalidatableObject для самостоятельной проверки следующим образом:

public Class Blog : IValidatableObject
{
      [Key]
      public int Id {get; set;}

      public ICollection<string> Tags {get; set;}


    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if(!Tags.Contains("testString"))
        {
              yield return new ValidationResult("Not a valid tag.", new [] {"Tags"});
        }
    }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...