ValidateInput (false) по-прежнему запускает проверку в IValidatableObject - PullRequest
0 голосов
/ 08 октября 2011

У меня есть контроллер, который я не хочу проверять при вызове.

Мой контроллер:

[Authorize(Roles = "Admin")]
[HttpPost]
[ValidateInput(false)]
public ActionResult Delete(MyLINQClass model)
{
    // Do something
}

Моя модель:

[MetadataType(typeof(MyLINQClass MetaData))]
public partial class MyLINQClass : DefaultModel, IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
         // Do validation
    }
}

Я не хочу, чтобы проверка запускалась, и я подумал, что добавление [ValidateInput(false)] поможет. Но Validate() все еще срабатывает.

Я использую ASP MVC 3 и .NET 4.

1 Ответ

1 голос
/ 08 октября 2011

[ValidateInput(false)] не относится к валидации модели. Он отключает проверку ASP.NET для символов XSS в запросе, таких как <, >, ... Проверка запускается связывателем модели по умолчанию, когда он пытается связать параметры MyViewModel. Если вы не хотите выполнять проверку, просто напишите другую модель представления, которую в качестве параметра примет действие «Удалить», и в которой не будет никакого метода Validate.

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