Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 缺少内容类型时,ASP.NET MVC无法正确反序列化JSON_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 缺少内容类型时,ASP.NET MVC无法正确反序列化JSON

Asp.net mvc 缺少内容类型时,ASP.NET MVC无法正确反序列化JSON,asp.net-mvc,Asp.net Mvc,使用ASP.NET MVC 4,我有一个接受JSON结构的控制器: public class SomeDto { ... public Boolean IsUnicornAlive { get; set; } ... } [HttpPost] public ActionResult DoSomething(SomeDto dto) { ... } 现在,如果此POST请求在未指定内容类型的情况下进入: { ... "IsUnicornAlive":true

使用ASP.NET MVC 4,我有一个接受JSON结构的控制器:

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

[HttpPost]      
public ActionResult DoSomething(SomeDto dto) {
...
}
现在,如果此POST请求在未指定内容类型的情况下进入

{
...
"IsUnicornAlive":true
...
}
仍会调用该操作,但IsUnicoraLive属性将为false。本质上,这是创建请求的一方的问题,但我仍然希望ASP不会静默处理它,也不会使用默认值调用我的操作。在这种情况下,最合适的处理是4xx错误,理想情况下为415。实现它最简单的方法是什么?或者有没有办法知道控制器操作中使用了默认值


注意:此问题与没有此问题的ASP.NET WebApi无关。这是专门针对MVC的。

为SomeDTO提供自定义ModelBinder,自己解析传入数据,并决定是否推断值、添加modelstate错误等。

查看控制器的modelstate属性。例如,当使用默认值时,ModelState.Keys.Count==0,但您可能会在该对象中找到更好的东西