Отключить проверку модели в Asp.Net MVC

Как отключить проверку модели для одного действия в контроллере? и я не хочу отключать проверку ввода, которая проверяет наличие вредоносного кода.


ОБНОВЛЕНИЕ

Я использую .Net 4.0 и MVC 3 Preview 1

8
задан MartinF 26 August 2010 в 19:56
поделиться

3 ответа

К сожалению, нет простого способа отключить проверку модели, происходящую в ModelBinder, за исключением регистрации каждого отдельного типа модели, который вы не хотите проверять (включая вложенные сложные типы) с определенным МодельБиндер. Это можно сделать с помощью следующего кода:

ModelBinders.Binders[typeof(MyModelType)] = new NonValidatingModelBinder();

Создание SkipValidationAttribute, который может быть присоединен к методам действия или параметрам метода действия, кажется невозможным, поскольку это должно быть реализовано в ControllerActionInvoker, но нет никакого способа сообщить ModelBinder, что он должен выполнять какую-либо проверку в SetProperty. () и OnModelUpdated при вызове BindModel() в методе GetParameterValue().

3
ответ дан 5 December 2019 в 06:08
поделиться

Я использую [ ValidateInput( false )]

Не уверен, что это предотвращает проверку модели или только проверку отправки IIS.

-3
ответ дан 5 December 2019 в 06:08
поделиться

Я бы рекомендовал вам выполнить проверку в оба местах, а не пытаться отключить проверку в пользовательском интерфейсе. Я понимаю вашу точку зрения о том, что служба не может предполагать, что ей передаются достоверные данные - это серьезная проблема, и именно поэтому ваша служба должна пройти проверку. Но вы должны также иметь проверку в своем пользовательском интерфейсе. Это также хорошо, потому что вы можете иметь проверку на стороне клиента, чтобы предотвратить ошибки пользователя и предоставить пользователям лучший опыт.

2
ответ дан 5 December 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: