C# 中的 DataAnnotations 是一种用于验证数据模型的属性。通过添加适当的属性,可以验证模型的属性是否满足特定的条件和要求。
下面介绍一些常见的 DataAnnotations 属性:
- [Required]
使用 [Required] 属性可以标记模型属性为必填项。例如:
public class UserModel
{
[Required(ErrorMessage = "请输入用户名")]
public string UserName { get; set; }
[Required(ErrorMessage = "请输入密码")]
public string Password { get; set; }
}
- [StringLength]
使用 [StringLength] 属性可以验证字符串属性的最小和最大长度。例如:
public class UserModel
{
[StringLength(20, MinimumLength = 3, ErrorMessage = "用户名长度必须在3到20个字符之间")]
public string UserName { get; set; }
[StringLength(20, MinimumLength = 6, ErrorMessage = "密码长度必须在6到20个字符之间")]
public string Password { get; set; }
}
- [Range]
使用 [Range] 属性可以验证数字属性的取值范围。例如:
public class UserModel
{
[Range(18, 99, ErrorMessage = "年龄必须在18到99岁之间")]
public int Age { get; set; }
}
- [RegularExpression]
使用 [RegularExpression] 属性可以验证属性的正则表达式模式。例如:
public class UserModel
{
[RegularExpression(@"^(\d{3,4}-)?\d{7,8}#34;, ErrorMessage = "请输入正确的电话号码")]
public string Phone { get; set; }
}
- [Compare]
使用 [Compare] 属性可以验证属性与另一个属性的比较。例如:
public class UserModel
{
[Compare("Password", ErrorMessage = "确认密码与密码不一致")]
public string ConfirmPassword { get; set; }
}
实际应用中,可以针对不同的场景和需求,组合使用这些属性,并根据情况自定义错误消息。例如:
public class UserModel
{
[Required(ErrorMessage = "请输入用户名")]
[StringLength(20, MinimumLength = 3, ErrorMessage = "用户名长度必须在3到20个字符之间")]
public string UserName { get; set; }
[Required(ErrorMessage = "请输入密码")]
[StringLength(20, MinimumLength = 6, ErrorMessage = "密码长度必须在6到20个字符之间")]
public string Password { get; set; }
[Compare("Password", ErrorMessage = "确认密码与密码不一致")]
public string ConfirmPassword { get; set; }
[RegularExpression(@"^(\d{3,4}-)?\d{7,8}#34;, ErrorMessage = "请输入正确的电话号码")]
public string Phone { get; set; }
[Range(18, 99, ErrorMessage = "年龄必须在18到99岁之间")]
public int Age { get; set; }
}
以上是一些常用的 DataAnnotations 属性及其用法,可以根据实际情况进行选择和使用。
在使用 DataAnnotations 验证模型时,我们需要添加一些代码来触发模型验证,并检查验证结果。
在 ASP.NET Core MVC 项目中,可以通过添加 [BindProperty] 属性标记来自动绑定模型,并在控制器中使用 ModelState.IsValid 属性来检查模型是否有效。
以下是一个简单的示例控制器:
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
public class UserController : Controller
{
[BindProperty]
public UserModel User { get; set; }
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Register()
{
if (!ModelState.IsValid)
{
return View("Index");
}
// 验证通过,执行注册流程
// ...
return View("Success");
}
}
在上面的示例中,我们使用了 [BindProperty] 属性标记来自动绑定模型中的属性。在 Register 动作中,我们检查了 ModelState.IsValid 属性来验证模型是否有效,如果无效,则返回原视图。如果模型验证通过,则执行注册流程,并显示成功视图。在视图中,可以使用 ValidationSummary() 辅助方法来显示错误消息。
Blazor 中也可以使用 DataAnnotations 来验证模型,并检查验证结果。 Blazor 通过 EditForm 组件来自动绑定数据并验证模型。
以下是一个简单的示例:
@page "/register"
@using System.ComponentModel.DataAnnotations
<EditForm Model="@User" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<label>用户名:</label>
<InputText @bind-Value="@User.UserName" />
<ValidationMessage For="@(() => User.UserName)" />
<label>密码:</label>
<InputText @bind-Value="@User.Password" />
<ValidationMessage For="@(() => User.Password)" />
<label>确认密码:</label>
<InputText @bind-Value="@User.ConfirmPassword" />
<ValidationMessage For="@(() => User.ConfirmPassword)" />
<label>电话号码:</label>
<InputText @bind-Value="@User.Phone" />
<ValidationMessage For="@(() => User.Phone)" />
<button type="submit">注册</button>
</EditForm>
@code {
private UserModel User { get; set; } = new UserModel();
private void HandleValidSubmit()
{
// 验证通过,执行注册流程
// ...
}
}
public class UserModel
{
[Required(ErrorMessage = "用户名是必填项")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "用户名长度必须在3-50个字符之间")]
public string UserName { get; set; }
[Required(ErrorMessage = "密码是必填项")]
[StringLength(50, MinimumLength = 6, ErrorMessage = "密码长度必须在6-50个字符之间")]
public string Password { get; set; }
[Compare("Password", ErrorMessage = "确认密码与密码不一致")]
public string ConfirmPassword { get; set; }
[RegularExpression(@"^(\d{3,4}-)?\d{7,8}#34;, ErrorMessage = "请输入正确的电话号码")]
public string Phone { get; set; }
}
在上面的示例中,我们定义了一个包含模型属性的 UserModel 类。在 Register 页面中,我们使用了 Blazor 的 EditForm 组件来绑定 User 对象,并使用 DataAnnotationsValidator 和 ValidationSummary 组件来验证模型和显示错误信息。在 HandleValidSubmit 方法中,我们可以执行注册流程并处理验证通过的情况。
在 Blazor 中,还有其他验证方式可用,例如使用 FluentValidation 等第三方库。使用哪种方式,可以根据自己的需求和喜好进行选择。
创作不易,如果您喜欢还请帮忙点赞关注,谢谢![作揖]
本文暂时没有评论,来添加一个吧(●'◡'●)