我在控制器中有一个方法:
public ActionResult SendNotification(Guid? id=null, SendNotification notification =null)
它响应/Apps/SendNotification/{guid}?{SendNotification properties}
SendNotification是具有多个字符串属性的模型。
我的问题是SendNotification永远不会为空。无论我如何调用该操作,.NET似乎总是实例化SendNotification的对象(所有字段都为null)。
我甚至使用System.Web.Http.FromUri
和System.Web.Http.FromBody
进行了测试,但仍然可以。
有什么想法吗?
注意:这不是WebApi。这是常规的MVC。
我的项目只有默认路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:2)
这就是模型绑定欺骗你。
由于它没有找到任何要绑定到Model的参数,因此所有属性都为null,但默认情况下仍然会对模型进行实例化。
不要检查Model是否为null,而是检查一个主要属性(例如ID)为null。