模型绑定
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_02
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_03

这是个最简单的绑定
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_04
先从表单找。再从路由的值上找,最后去QueryString上找
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_05

通过反射获取这个类型的属性进行填充。反射完有几个属性,就开始去找着几个属性并绑定值ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_06

复杂类型

最后又加了一个属性,这个属性是另外一个对象
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_07
View页面,只要前端也有这个对象的字属性就可以了。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_08
使用这些Attributes可以改变或者影响绑定
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_数据_09
Bind:选择性的绑定
BindNever:可以放到model属性上。表示不应该被绑定
BindRequired:必须有绑定

测试:
前台加了Role.RoleName
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_10
前台输入这个角色名称
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_11
极端点主要看下Role.RoleName这个值。RoleName 绑定上了值。说明嵌套属性是可以绑定的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_12
又新建了ViewModel。这两个属性名和上面的model类属性名重复了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_13
但是它是作为嵌套属性存在的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_14
View里面也是嵌套属性的方式
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_15

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_16
也是可以获取到值的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_数据_17

Bind[]表示有选择的绑定
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_18

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_数据_19
这里也可以写多个属性值
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_数据_20
参数类型是params类型
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_21
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_22
userName属性就不会被绑定了ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_23

再看一个简历的例子

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_24
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_数据_25
重点是画线的这里
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_26


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_27

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_28

如果action的类型换成model
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_29
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_30

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_嵌套_31
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_角色名_32

指定Bingding来源

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_33
改变来源的优先级
指定数据的来源
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_34

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_35

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_表单_36
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_37
浏览器里面Header的值
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding_asp.net core 2.2_38