模型绑定
上一篇文章中,表单中添加tagHelper
里面讲到模型的绑定
- 模型绑定是将HTTP请求中的数据映射到控制器操作方法上对应的参数
- 操作方法中的参数可以是简单类型,如整数,字符串等,也可以是复杂类型,如Custom,Employee,Order等
模型验证
类代码
public class Student
{
public int Id { get; set; }
[Display(Name = "姓名")]
[Required(ErrorMessage = "请输入名字"), MaxLength(50,ErrorMessage ="名字的长度不能超过50")]
public string Name { get; set; }
[Required]
[Display(Name = "邮件地址")]
[RegularExpression(@"^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$",ErrorMessage = "邮箱的格式不正确")]
public string Email { get; set; }
[Display(Name = "班级信息")]
[Required]
public ClassNameEnum ClassName { get; set; }
}
public enum ClassNameEnum
{
[Display(Name = "未分配")]
None,
[Display(Name = "一年级")]
FirstGrade,
[Display(Name = "二年级")]
SecondGrade,
[Display(Name = "三年级")]
GradeThree
}
Required: 指定该字段是必填的
Range : 指定允许的最小值和最大值
MinLength : 使用MinLength指定字符串的最小长度
MaxLength : 使用MinLength指定字符串的最大长度
Compare : 比较模型的2个属性。例如,比较Email和ConfirmEmail属性
RegularExpression: 正则表达式 验证提供的值是否与正则表达式指定的模式匹配
控制器中方法代码
public IActionResult Create(Student student)
{
if (ModelState.IsValid)
{
......
}
return View();
}
方法中也可以验证类里面属性的正确性
前端中用于显示的代码
其中asp-validation-summary 显示所有的验证提示
asp-validation-for显示当前的属性参数的验证提示
<form asp-controller="home" asp-action="create" method="post" class="mt-3">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="row form-group">
<label asp-for="Name" class=" col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="Name" class="form-control" placeholder="请输入名字" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
</div>
<div class="row form-group">
<label asp-for="Email" class=" col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="Email" class="form-control" placeholder="请输入邮箱" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="row form-group">
<label asp-for="ClassName" class=" col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<select asp-for="ClassName" asp-items="Html.GetEnumSelectList<ClassNameEnum>()" class="custom-select mr-sm-2">
<option value="">请选择</option>
</select>
<span asp-validation-for="ClassName" class="text-danger"></span>
</div>
</div>
<div class="row form-group">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">创建</button>
</div>
</div>
</form>