[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。
答案 0 :(得分:-1)
MVC框架使用称为模型绑定的系统从HTTP请求创建C#对象以便传递 它们作为动作方法的参数值。这就是MVC框架处理表单的方式,例如:它看起来如此 在已定位的操作方法的参数处,并使用模型绑定器获取发送的表单值 在将它们传递给操作之前,通过浏览器将它们转换为具有相同名称的参数类型 方法
如果要自定义模型绑定的工作方式,可以创建自定义模型绑定器。