Различные аннотации данных для действий с одной и той же моделью представления - PullRequest
0 голосов
/ 23 июня 2011

Как объединить эти две модели ViewModel в одну и выполнить разные проверки (клиент и сервер) для каждого действия? Наблюдать описание не требуется при сохранении черновиков, но при объявлении.

public class SaveDraftViewModel
{
    [Required]
    public string Title {get;set;}

    public string Description {get;set;}
}

public class AnnounceViewModel
{
    [Required]
    public string Title {get;set;}

    [Required]
    public string Description {get;set;}
}

1 Ответ

0 голосов
/ 24 июня 2011

В зависимости от того, как вы будете различать два типа моделей, вы можете использовать IValidatableObject следующим образом:

public class CombinedViewModel : IValidatableObject
{
    [Required]
    public string Title {get; set;}

    public string Description {get; set;}

    public ViewModelType Type {get; set;}

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        var results = new List<ValidationResult>();
        if (Type == ViewModelType.Announce)
        {
            results.Add(new ValidationResult("Description is required.");
        }
        return results;
    }
}

Где ViewModelType - перечисление, определяющее 2 типа моделей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...