Проверка JQuery в MVC вызывает проблемы - PullRequest
0 голосов
/ 02 апреля 2012

Я использую модель MVC-View, сначала модель EF

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

[Required]
public string TeamName { get; set; }
[Required]
public string ConsultantName { get; set; }

Эти два свойства могутотключить в зависимости от того, какое SubjectTypeName выберет пользователь

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

Допустим, я выбираю значение SubjectTypeName, и мои TeamName и ConsultantName отключаются, но когда я хочу сохранить форму, я получаю сообщение об ошибке, потому что мояModelState.IsValid становится ложным.И это [Required], что делает его "false".

Есть ли простые решения для этого?Как простой код Jquery для неактивных TeamName и ConsultantName из проверки, так что мой ModelState.IsValid становится "true"?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Вы можете взглянуть на следующую запись в блоге , которая иллюстрирует, как вы можете написать собственный [RequiredIf] проверочный атрибут, который будет обрабатывать условную проверку на сервере и на клиенте. Вы можете напрямую загрузить Mvc.ValidationToolkit , который содержит этот атрибут проверки.

0 голосов
/ 02 апреля 2012

Вместо того, чтобы отмечать эти 2 свойства как необходимые (поскольку в некоторых случаях их нет), я бы реализовал интерфейс IValidatableObject, где вы можете реализовать этот тип бизнес-логики тривиально, сравнивая значения нескольких свойств.

У ScottGu есть запись в блоге о том, как это сделать:

http://weblogs.asp.net/scottgu/archive/2010/12/10/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3.aspx

0 голосов
/ 02 апреля 2012

Если проблема была на стороне клиента, jQuery validate отобразит ее.Ваша проблема заключается в проверке серверной части, как вы говорите, когда проверяется ModelState.IsValid.Вам нужно будет использовать CustomValidations для достижения того, что вам нужно.

Возможно, вы захотите проверить это из

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