练习+博客,量化自己的进步!
Model Binding就是处理Http请求里的数据:
- form值
- 地址参数
- 请求的标头
- 等等
有简单类型int、string;有复杂的类型,如实力类包含实体类的数据;有数组等。
简单的常用的
平时常用的地址中的参数如:
http://localhost:22163/User/Edit/08cb8a0c-9534-4eb4-b1f2-580c64918175
或
http://localhost:22163/User/Edit/id=08cb8a0c-9534-4eb4-b1f2-580c64918175
http://localhost:22163/home/test?a=1&b=2
[HttpPost]
public IActionResult Test(string a, int b,[FromHeader]string host)// 方法参数可以匹配到地址参数值也可以匹配到form值
{
var _a = Request.Query["a"]; // 匹配地址的值
var _b = Request.Query["b"];
var _formA = Request.Form["a"]; // 匹配form的值
var _formB = Request.Form["b"];
var ho = Request.Headers["host"]; // 匹配标头
var h = Request.Host;
return View();
}
直接上代码,看着直观些,上面代码的解释:
- Request.Query 获取地址上的参数值
- Request.Form获取post提交form表单中的值
- Request.Header获取标头的值,host就是标头中的值
- Request.Host是直接获取host的值
- 方法的参数a、b、host三个参数,默认能匹配到地址和form表单中的值,但有时后想获取其他地方的值,就需要指定来源了,如[FromHeader]表明指定来源标头,当然有很多来源
复杂点的Form
form的提交会有稍微复杂的情况,如:
先定义一个实体类:
[BindNever]
public class TestViewModel
{
public string Name { get; set; }
pu