Как я могу проверить, используя DataAnnotations только часть полей в Viewmodel? - PullRequest
3 голосов
/ 03 декабря 2010

У меня есть Viewmodel, который выглядит следующим образом:

public class Viewmodel
{

  public int Type {get;set} // 0 if typeA, 1 if typeB

  [Required]
  public string AProperty1 {get;set}

  [Required]
  public string AProperty1 {get;set}

  ...

  [Required]
  public string BProperty1 {get;set}

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

Есть 2 формы, которые получают эту модель представления, и пользовательские входы FormA AProperty1, AProperty2 и т. Д. И BProperty-s возвращаются как нуль.То же самое с FormB.Тип формы (FormA или FormB) назначен полю ViewModel.type.

Так что проблема в том, что в моем контроллере я проверяю свойство ModelState.IsValid, и оно будет ложным в обоих случаях, потому что половинаполя всегда равны нулю.

Одним из возможных решений может быть как-то переопределить свойство ModelState.IsValid в моем ModelView, чтобы я мог передать ему тип.Но, насколько я знаю, пути нет.

Есть ли другие решения?(предпочтительно использовать с проверкой на стороне клиента)

1 Ответ

2 голосов
/ 03 декабря 2010

Если на самом деле необходимо иметь только одну ViewModel для двух разных представлений, то «Частичная проверка» может быть вашим решением.Проверьте этот блог:

http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/

...