ASP.NET Core MVC 是一种基于模型-视图-控制器(Model-View-Controller)架构的 Web 应用程序开发框架。在使用 ASP.NET Core MVC 进行开发时,模型验证是非常重要的一部分。模型验证可以确保从客户端提交的数据符合预期,并保证应用程序的安全性和有效性。本文将介绍 ASP.NET Core MVC 中的模型验证,并提供一些关于模型验证的实用技巧。
1. 为模型属性添加验证规则
在 ASP.NET Core MVC 中,可以通过在模型属性上添加验证特性来为其添加验证规则,例如:
public class User
{
[Required(ErrorMessage = "用户名必填")]
public string UserName { get; set; }
[EmailAddress(ErrorMessage = "请输入有效的邮箱地址")]
public string Email { get; set; }
[Range(18, 99, ErrorMessage = "年龄必须在18到99岁之间")]
public int Age { get; set; }
}
在上述示例中,Required
特性表示 UserName
属性是必填字段,EmailAddress
特性表示 Email
属性必须是有效的邮箱地址,Range
特性表示 Age
属性的值必须在 18 到 99 之间。当模型验证失败时,ASP.NET Core MVC 会自动将错误信息显示给用户。
2. 手动进行模型验证
除了使用特性来进行模型验证外,还可以在控制器中手动调用 ModelState.IsValid
方法对模型进行验证。例如:
public class UserController : Controller
{
[HttpPost]
public IActionResult Create(User user)
{
if (!ModelState.IsValid)
{
// 处理模型验证失败的情况
}
// 处理模型验证成功的情况
}
}
在上述示例中,ModelState.IsValid
方法用于检查模型是否通过验证。如果模型验证失败,则可以根据具体情况进行相应的处理。
3. 自定义模型验证规则
除了使用内置的验证特性外,还可以自定义模型验证规则。可以通过创建自定义验证特性并实现 ValidationAttribute
类来实现自定义验证规则。例如:
public class ValidUrlAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string url = value.ToString();
if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
{
return new ValidationResult(ErrorMessage);
}
}
return ValidationResult.Success;
}
}
在上述示例中,ValidUrlAttribute
自定义验证特性用于判断一个字符串是否为有效的 URL 地址。可以通过重写 IsValid
方法来自定义验证规则。然后,可以像使用内置的验证特性一样使用自定义验证特性。
4. 显示验证错误信息
在 ASP.NET Core MVC 中,可以通过使用 ValidationSummary
和 ValidationMessage
HTML 辅助方法来显示模型验证错误信息。
@model User
@{
ViewData["Title"] = "创建用户";
}
<h1>@ViewData["Title"]</h1>
<form asp-action="Create">
<div class="form-group">
<label asp-for="UserName"></label>
<input asp-for="UserName" class="form-control" />
<span asp-validation-for="UserName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Email"></label>
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Age"></label>
<input asp-for="Age" class="form-control" />
<span asp-validation-for="Age" class="text-danger"></span>
</div>
<input type="submit" value="创建" class="btn btn-primary" />
<div asp-validation-summary="All"></div>
</form>
在上述示例中,asp-validation-for
属性用于显示对应属性的验证错误信息,asp-validation-summary
属性用于显示所有的验证错误信息。
通过以上几个步骤,我们可以在 ASP.NET Core MVC 中进行模型验证,并使用各种方式来显示验证错误信息。模型验证是 ASP.NET Core MVC 开发中不可或缺的一部分,能够大大提升应用程序的可靠性和用户体验。
本文来自极简博客,作者:蓝色海洋,转载请注明原文链接:ASP.NET Core MVC 中的模型验证