0

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

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 的。

4

2 回答 2

0

如何为 SomeDTO 使用自定义 ModelBinder 并自己解析传入数据并决定是否推断值、添加模型状态错误等...

于 2013-05-23T13:59:51.970 回答
0

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

于 2013-05-23T16:11:37.240 回答