Как отключить проверку модели для одного действия в контроллере? и я не хочу отключать проверку ввода, которая проверяет наличие вредоносного кода.
Я использую .Net 4.0 и MVC 3 Preview 1
К сожалению, нет простого способа отключить проверку модели, происходящую в ModelBinder, за исключением регистрации каждого отдельного типа модели, который вы не хотите проверять (включая вложенные сложные типы) с определенным МодельБиндер. Это можно сделать с помощью следующего кода:
ModelBinders.Binders[typeof(MyModelType)] = new NonValidatingModelBinder();
Создание SkipValidationAttribute, который может быть присоединен к методам действия или параметрам метода действия, кажется невозможным, поскольку это должно быть реализовано в ControllerActionInvoker, но нет никакого способа сообщить ModelBinder, что он должен выполнять какую-либо проверку в SetProperty. () и OnModelUpdated при вызове BindModel() в методе GetParameterValue().
Я использую [ ValidateInput( false )]
Не уверен, что это предотвращает проверку модели или только проверку отправки IIS.
Я бы рекомендовал вам выполнить проверку в оба местах, а не пытаться отключить проверку в пользовательском интерфейсе. Я понимаю вашу точку зрения о том, что служба не может предполагать, что ей передаются достоверные данные - это серьезная проблема, и именно поэтому ваша служба должна пройти проверку. Но вы должны также иметь проверку в своем пользовательском интерфейсе. Это также хорошо, потому что вы можете иметь проверку на стороне клиента, чтобы предотвратить ошибки пользователя и предоставить пользователям лучший опыт.