当没有发布的属性与模型匹配时,在ASP.Net Web API中避免使用空模型

时间:2014-08-06 12:25:13

标签: asp.net-web-api

[HttpPost, Route("foo")]
public void DoStuff(FooModel args)
{
    if(args == null) args = new FooModel();

    // ...
}

public class FooModel
{
    public string Foo { get; set; }
    public string Bar { get; set; }
}

当POST请求发送到Web API方法并且HTTP请求不包含任何填充模型的参数时,而不是将空模型传递给操作,而是将Web API传递给操作,需要在每个动作开始时对模型参数进行空检查。

我理解该框架可能试图避免不必要的对象构造,但这些总是轻量级的类,没有特定的功能。如果模型是每次构建的话,它会节省时间并且更加一致,而不是试图保存一些毫秒的可忽略的部分,而这只是构建模型对象并将其传递给动作的成本。

如何让框架始终将构造的(非null)模型对象传递给我的动作,即使没有相关的属性能够被填充?

我正在使用ASP.Net Web API 2.2。

1 个答案:

答案 0 :(得分:-1)

MVC框架使用称为模型绑定的系统从HTTP请求创建C#对象以便传递 它们作为动作方法的参数值。这就是MVC框架处理表单的方式,例如:它看起来如此 在已定位的操作方法的参数处,并使用模型绑定器获取发送的表单值 在将它们传递给操作之前,通过浏览器将它们转换为具有相同名称的参数类型 方法

如果要自定义模型绑定的工作方式,可以创建自定义模型绑定器。

Parameter Binding in ASP.NET Web API

Creating a Custom Web API Model Binder