ByteArrayModelBinder
1.Asp.Net Core实现了base64编码的字节到byte[]的转化。
2.可以使用query,form传递,body无法传递
普通键值对:query,form
文件键值对:form
Json:Body
自定义模型绑定器
不采用[Attribute]的方法
建立一个绑定器,设置绑定规则
1.确定需求,例如修改一个string的规则将传过来的数据全部变成大写
2.建立绑定器
public class CusSringBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var b = bindingContext.ValueProvider.GetValue("student").FirstValue;
//返回绑定后的数据
bindingContext.Result = ModelBindingResult.Success(b.ToUpper());
return Task.CompletedTask;
}
}
3.添加到需要被改变规则的数据上
[HttpPost("text")]
public async Task<IActionResult>
Text([ModelBinder(BinderType = typeof(CusSringBinder))]string student)
{
return Ok(student);
}
注意:使用query和form可以使用2中的方法获取键值对的值,但是body无法通过这种方式获取