Проверка ASP.NET вложенных свойств модели - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь проверить модель, содержащую другие объекты с правилами проверки, используя TryUpdateModel:

public class Post
{
    public User User;
}

public class User : IValidatableObject
{
    public string Captcha;

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {            
        if (/* check if captcha valid */)
        {
            yield return new
                ValidationResult("Captcha invalid.",
                    new[] { "Captcha" });
        }
}

public ActionResult Edit(int postId, string title)
{
    var post = postsRepository.Get(postId);
    if (TryUpdateModel(post))
    {
        /* save */
    }
}

Проблема в том, что вложенный пользователь также проверен, но это обновление сообщения, и нетполе captcha в форме, поэтому состояние модели всегда недопустимо.Как я могу проверить только свойства типа сообщения?

1 Ответ

0 голосов
/ 01 сентября 2011

Я не особенно согласен с проверкой CAPTCHA на пользовательской модели, если только вы не требуете CAPTCHA везде , если вы используете модель User.

Как говорится, вы могли бы ...

  • Создайте флаг, который должен быть установлен для фактической проверки CAPTCHA, и в противном случае верните значение valid.
  • Создать другую модель, которая точно соответствует текущей форме
  • Удалите CAPTCHA из модели и просто примите ее в качестве параметра для действий, для которых она требуется
  • Установить значение часового для CAPTCHA по умолчанию, которое всегда возвращает действительный
  • тонн других идей ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...