[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();
原文地址:https://www.cnblogs.com/az4215/p/10894267.html
时间: 2024-10-12 02:17:36