6

我在控制器中有一个方法:

public ActionResult SendNotification(Guid? id=null, SendNotification notification =null)

它回应/Apps/SendNotification/{guid}?{SendNotification properties}

SendNotification 是一个具有多个字符串属性的模型。

我的问题是 SendNotification 永远不会为空。无论我如何调用该操作,.NET 似乎总是实例化一个 SendNotification 对象(所有字段都为空)。

我什至用System.Web.Http.FromUriand进行了测试System.Web.Http.FromBody,它仍然可以这样做。

有任何想法吗?

注意:这不是 WebApi。这是常规的 MVC。

我的项目只有默认路由:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
4

1 回答 1

2

那是模型绑定在欺骗你。

由于它没有找到任何要绑定到模型的参数,因此所有属性都为空,但模型仍默认实例化。

不要检查模型是否为空,而是检查您的主要属性之一(例如 ID)是否为空。

于 2012-11-23T16:27:56.093 回答