Проверка на уровне модели - PullRequest
5 голосов
/ 31 января 2010

Как выполнить валидацию на уровне модели, как указано в сообщении Брэда Уилсона:

Наконец, если вы хотите, чтобы проверка имела доступ к нескольким свойствам, сделайте ее проверкой на уровне модели (чтобы она получала всю модель в качестве параметра модели, а не отдельное значение отдельного свойства).

С http://forums.asp.net/p/1457591/3650720.aspx

Я пытался сделать следующее

[MyCustomValidation("SomeStuff")]
public class MyClass
{
     // properties
}

Место точек останова в IsValid переопределении MyCustomValidation ничего не вызывает, код просто продолжается. Точки останова в конструкторе MyCustomValidation работают, но ничего после этого.

Разве это не то, к чему относится model-level validation? 1019 *

UPDATE:

ссылка dirtygopher на http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html показывает проверку модели, единственная проблема заключается в том, что атрибуты проверки помещаются в дочерние свойства родительского класса.

Я ищу способ поместить validation-attributes непосредственно в класс, как я продемонстрировал в моем примере выше.

Ответы [ 3 ]

2 голосов
/ 31 января 2010

Хороший пример для этого есть в RegisterModel, который поставляется с последней версией asp.net mv 2.

Посмотрите на атрибут "PropertiesMustMatch" и его использование.

0 голосов
/ 16 ноября 2011

Это еще один ответ на этот вопрос, если вы используете MVC3.В этом примере создается атрибут, который можно прикрепить к одному свойству и сделать его зависимым от другого свойства путем передачи имени свойства и значения объекта.

Результат более элегантный, поскольку атрибут привязан к объекту, который фактически проверен.

http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx

0 голосов
/ 02 февраля 2010

Вот хороший пост в блоге Брэда Уилсона http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html. Я надеюсь, что это поможет вам понять концепцию валидации на уровне модели.

...