我们可以给实体属性增加以下标注特性来约束模型绑定的行为的。
比如我们规定某个字段必须有绑定。否则报错。
或者我们规定某个字段不能绑定。否则我们规定某个数据只能从FormBody中绑定或者从FormHeader中绑定。
//增加这个标注 则这个属性就不会被绑定
[BindNever]
public int Id { get => id; set => id = value; }
//增加这个标注 则这个属性 必须绑定 如果没有绑定 则会抛出错误的
[BindRequired]
public string Name { get => name; set => name = value; }Code language: PHP (php)
[HttpPost]
public IActionResult Register([ModelBinder]UserInfo userInfo)
{
if (ModelState.IsValid)//如果name 没有绑上 则这个IsValid 就为false
{
}
//不用模型绑定 以前的方式取表单数据或者URL中的参数
string s1 = HttpContext.Request.Form["name"]; //post的数据用form
string s2 = HttpContext.Request.Query["id"];//地址栏get的数据用query
return View();
}Code language: PHP (php)
注意 这里的不能绑定 意思是没有这个表单字段。而不是说这个字段为null
我们把这个input注释掉 就会有效果
@{
ViewData["Title"] = "Register";
}
<h2>注册</h2>
<form method="post">
@*<input type="text" name="name" />*@
<input type="text" name="age" />
<input type="submit" value="提交" />
</form>Code language: HTML, XML (xml)
Previous: 12-Action中模型绑定
Next: 14-模型验证-服务器端验证