Visual

20 Model Binding.mp4 (46.92MB)

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 属性,其他属性都是默认值:
image.png

  • 绑定多个值

    1. public async Task<IActionResult> AddUser([Bind("Another","TTT")]UserCreateViewModel userCreateViewModel)
  • BindNever是放在Model上的,如:

    1. [BindNever]
    2. [Required]
    3. [Display(Name = "用户名")]
    4. public string UserName { get; set; }
  • 获取list的值

image.png

image.png
image.png
image.png

指定 Binding 来源

  • FromBody:Request Bodys
  • FromQuery:QueryStrings
  • FromHeader:Request Headers
  • FromRoute
  • FromForm

示例:

  1. public ActionResult List(
  2. [FromQuery] int id,
  3. [FromHeader(Name = "Accept")] string accept)
  4. {
  5. ...
  6. }