Проверка в ASP.NET MVC с использованием контрактов кода - PullRequest
2 голосов
/ 31 июля 2010

Я хочу знать доступные варианты использования атрибутов «Контракты кода» в качестве правил проверки в ASP.NET MVC 2.

Ответы [ 2 ]

2 голосов
/ 02 августа 2010

Вы можете сделать это, настроив Runtime Checker.

Хотя есть возможность настроить контракты на использование кода в качестве основы для валидации, я бы посоветовал против этого.Это одна из более продвинутых функций для настройки Среды проверки выполнения и, что более важно, не для того, для чего созданы Code Contracts.

Code Contracts - это в основном средство интеграции Design by Contract в вашпроект.Хотя одна из его целей состоит в том, чтобы проверять ваш код на соответствие дизайну вашего класса, это не структура проверки .

По моему мнению, вы должны использовать его рядом сеще одна реальная среда валидации.

Прежде чем начать использовать Code Contracts, я предлагаю вам прочитать руководство пользователя здесь .Он содержит всю информацию, включая информацию о том, как настроить средство проверки времени выполнения.

1 голос
/ 05 августа 2010

Да, это правда, что основная цель «Контрактов кода» - проверить мой код на соответствие дизайну моего класса, но он также описывает действительные состояния моего объекта.

Все, что я могу придумать для сценариев проверки, относится к этим трем типам:

  1. Проверка входных данных (проверка пользовательского интерфейса)
  2. Проверка домена (DbC)
  3. Проверка выходных данных (постоянство Валидация, например: NHibernate Валидатор )

Я рассматриваю проверку как логический вопрос, находится ли целевой объект в допустимом состоянии или нет.

DbC состоит из трех частей,

  1. Правила проверки
  2. Статическая проверка
  3. средство проверки времени выполнения

Первая часть (правила) является общей для всех трех сценариев проверки. Когда я отмечаю свойство с помощью «Not Null», используя «Code Contracts», чтобы проверить его дизайн, разве не уродливо пометить его «Not Empty» с помощью «System.ComponentModel.DataAnnotations» для MVC (проверка пользовательского интерфейса)?

В абстрактном виде определение действительных состояний является основным, и общая часть платформ валидации и «Контрактов кода» предоставляет его, с одним дополнительным элементом, который является «Статическим проверяющим» для разработки домена (не I / O).

...