zoukankan      html  css  js  c++  java
  • Web Api 模型绑定 二

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

    1.ApiController属性使模型验证错误自动触发HTTP400响应。因此,不需要进行ModelState.IsValid验证。若要禁用400行为,需要将SuppressModelStateInvalidFilter属性设置为true。

    >>> services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
        .ConfigureApiBehaviorOptions(options=>{
          options.SuppressModelStateInvalidFilter=true;
        });

    2.如果没有ApiController属性或诸如[FromQuery]的绑定源属性,Asp.Net Core运行时会尝试使用复杂对象模型绑定器。复杂对象模型绑定器按已定义顺序从值提供程序拉取数据。
    ApiController属性将推理规则应用于操作参数的默认数据源。借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源。
      [FromBody]针对复杂类型参数进行推断。但其不适用于具有特殊含义的任何复杂的内置类型,如IFormCollection和CancellationToken。
      [FromForm]针对IFormFile和IFormFileCollection类型的操作参数进行推断。
      [FromRoute]针对与路由模板中的参数相匹配的任何操作参数名称进行推断。
      [FromQuery]针对任何其他操作参数进行推断。
    若要禁用绑定源推理,需要将SuppressInferBindingSourcesForParameters设置为true。
    >>> services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
        .ConfigureApiBehaviorOptions(options=>{
          options.SuppressInferBindingSourcesForParameters=true;
        });
    [注]在asp.net core2.1中,集合类型参数(如列表和数组)被不正确地推断为FromQuery。若要从请求正文中绑定参数,应对这些参数使用FromBody属性。此行为在asp.net care2.2或更高版本中得到
    更正,其中集合类型被推断为从正文中绑定。

  • 相关阅读:
    当前日志损坏解决一例
    Oracle 1204 RAC failover 测试 (一)
    Logical standby跳过个别SQL不Apply的测试
    Data guard 又出问题了
    CPIO无反应
    回答棉花糖先生关于我说的DB自动增加Index的问题
    SSD硬盘,先不要用在Server上
    ORA00304: requested INSTANCE_NUMBER is busy,终于解决
    .Net运行时的相互关系
    CSS布局探密04
  • 原文地址:https://www.cnblogs.com/az4215/p/10957354.html
Copyright © 2011-2022 走看看