Web Api 模型绑定 一

Posted az4215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web Api 模型绑定 一相关的知识,希望对你有一定的参考价值。

[https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2]

1.模型绑定
  简单模型绑定针对简单类型(如string,int,DateTime等)可进行单一绑定;但若遇到复杂类型,则需要通过反射和递归遍历查找,查找模式paramter_name.property_name。
    >>> 对于Collection类型,模型查找将查找parameter_name[index]或[index]的匹配项
    >>> 对于Dictionary类型,模型查找将查找parameter_name[key]或[key]的匹配项
  默认模型绑定行为将根据参数的类型将参数设置为其默认值
    >>> 如 T[] => Array.Empty<T>()
    >>> string => null
    >>> int? => null
    >>> T => default(T)
  如果绑定失败,MVC不会引发错误,需要用户检查ModelState.IsValid属性
2.自定义模型绑定行为
  [BindRequired]
  [BindNever]
  [FromHeader] [FromQuery] [FromRoute] [FromForm]
  [FromService]
  [FromBody]
  [ModelBind]
3.全局自定义模型绑定和验证
  禁用对特定类型的所有模型的模型绑定
  services.AddMvc().AddMvcOptions(options => options.ModelMetadataDetailsProviders.Add(
        new ExcludeBindingMetadataProvider(typeof(System.Version))));
  禁用对特定类型的属性的验证
  services.AddMvc().AddMvcOptions(options => options.ModelMetadataDetailsProviders.Add(
        new SuppressChildValidationMetadataProvider(typeof(System.Guid))));
4.绑定请求正文中的带格式数据
  对于用[FromBody]修饰的每一个操作,最多可以有一个参数。
  
正文格式除了MVC默认情况下的json处理,也可手动添加对其他格式的处理,比如xml
  >>> services.AddMvc().AddXmlSerializerFormatters();

以上是关于Web Api 模型绑定 一的主要内容,如果未能解决你的问题,请参考以下文章

csharp Web API的抽象模型绑定

Web Api 模型绑定和多态继承

来自json的web api 2绑定模型

Web Api模型绑定和多态继承

Web API 无法使用 utf-16 编码的 XML 绑定 POST 模型

ASP.NET Web API - 模型绑定不适用于 POST 上的 XML 数据