2013-05-23 2 views
0

Использование ASP.NET MVC 4, у меня есть контроллер, который принимает структуру JSON:ASP.NET MVC не десериализации JSON правильно, когда Conten-Type отсутствует

public class SomeDto { 
    ... 
    public Boolean IsUnicornAlive { get; set; } 
    ... 
} 

[HttpPost]  
public ActionResult DoSomething(SomeDto dto) { 
... 
} 

Теперь, если этот запрос POST поставляется в без Content-Type: указанный

{ 
... 
"IsUnicornAlive":true 
... 
} 

действие еще не вызывается, но IsUnicornAlive свойство было бы ложным. По сути, это проблема на стороне, которая создала запрос, но все же я ожидал бы, что ASP не будет относиться к нему молча и не вызовет мое действие с дефолтными значениями. Наиболее подходящей обработкой в ​​этом случае будет ошибка 4xx, в идеале - 415. Каким будет самый простой способ его реализации? Или есть способ узнать, что значения по умолчанию использовались внутри действия контроллера?

Примечание: этот вопрос касается не ASP.NET WebApi, у которого нет этой проблемы. Это особенно касается MVC.

ответ

0

Как о наличии пользовательского ModelBinder для SomeDTO и анализа поступающих данных самостоятельно и решить, следует ли выводить значения, добавьте ModelState ошибку, и т.д ...

0

Посмотрите на собственность ModelState Контролера. Например ModelState.Keys.Count == 0, когда использовалось значение по умолчанию, но вы можете найти что-то еще приятнее в этом объекте.

Смежные вопросы