У меня есть система проверки, настроенная для автоматической проверки параметров методов действия Web Api (включая методы действий OData). Однако это не работает для запросов PATCH, которые хранят измененные свойства в типе Delta<Entity>
.ASP.NET Web Api OData: как проверить Delta <Entity>?
Я сделал некоторые копать вокруг и, как вы можете see in the ASP.NET source code из Delta
, он имеет атрибут NonValidatingParameterBinding
, что означает, что Delta
«s не подвергаются проверке.
Теперь очевидным решением было бы применить дельта, а затем выполнить ручную проверку полученного объекта.
Но есть ли другие решения, которые не требуют применения патча? В идеале это должно произойти автоматически до того, как будет вызван метод действия ...
Спасибо.
Ну, это интересное дизайнерское решение, учитывая, что существуют валидаторы для отдельных свойств. Я создал фильтр, который проверяет одно измененное свойство Delta за раз, и он отлично работает ... что в этом плохого? Логика проверки здесь: http://pastebin.com/npSMxg9y; Атрибут фильтра здесь: http://pastebin.com/ARnstAJD –
Ваш FilterAttribute полагается на предположение, что фреймворк работает с проверкой на Delta. Это предположение неверно. 'Delta ' явно отклоняется от проверки. Таким образом, не было бы ошибок проверки в «ModelState» и «ModelState.IsValid» было бы правдой, даже если модель недействительна. –
Вот почему атрибут вызывает 'searchForAndValidateDelta', который ищет параметр Delta', переданный в действие, и проверяет каждое измененное значение свойства отдельно. И это работает великолепно, кстати :) Мой вопрос в том, есть ли какие-то больные побочные эффекты, о которых я должен знать. –