Visual
Model Binding
Model Binding 允许我们用 HTTP 请求里的数据来创建 C# 对象,这个对象就是 Action 方法的参数。
可以使用以下类型用来 Model Binding:
- int,string 等简单类型
- 复杂类型对象
- 数组
示例:
将 localhost/Albums/Detail/3
绑定到 AlbumController 的 Details(int id) 方法。
Model Binder
Model Binding 主要依赖于 Model Binder。Model Binder 从 HTTP 请求的不同部分寻找参数,并将其组合绑定到 Action 的参数。
Model Binder 默认寻找范围:
- Form 表单提交的值
- 路由的值
- QueryString 的值
Binding Attributes
通过 Binding Attributes 自定义绑定。
- Bind:有选择的绑定属性
- BindNever:指定属性不需要绑定
- BindRequired:指定属性必须绑定
示例:使用 Bind 仅绑定 UserName 和 Email 属性,其他属性都是默认值:
绑定多个值
public async Task<IActionResult> AddUser([Bind("Another","TTT")]UserCreateViewModel userCreateViewModel)
BindNever是放在Model上的,如:
[BindNever]
[Required]
[Display(Name = "用户名")]
public string UserName { get; set; }
获取list的值
指定 Binding 来源
- FromBody:Request Bodys
- FromQuery:QueryStrings
- FromHeader:Request Headers
- FromRoute
- FromForm
示例:
public ActionResult List(
[FromQuery] int id,
[FromHeader(Name = "Accept")] string accept)
{
...
}