c# - 如何使用多个 ViewModel 在 ASP.NET 中添加自定义年龄验证
问题描述
我是 Web 开发的新手,我在验证方面遇到了一些问题。我有 1 个模型“客户”和几个 ViewModel,我正在尝试创建自定义年龄验证,但我不明白我应该如何创建通用方式来投射validationContext.ObjectInstance
到任何 ViewModel。
public class MinimumAgeAttribute : ValidationAttribute
{
private readonly int _minAge;
public MinimumAgeAttribute(int _minAge)
{
this._minAge = _minAge;
}
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
var customer = validationContext.ObjectInstance; // here are problems
//and so on....
return ValidationResult.Success;
}
}
这是模型
public class Customer
{
[Key]
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public bool IsSubscribedToNewsLetter { get; set; }
public MembershipType MembershipType { get; set; }
public byte MembershipTypeId { get; set; }
[Column(TypeName = "datetime")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[Display(Name = "Birth date")]
[MinimumAge(18)]
public DateTime? BirthDate { get; set; }
}
和 ViewModel
public class CustomerDataViewModel
{
[Required]
public string Name { get; set; }
public IEnumerable<MembershipType> MembershipType { get; set; }
public bool IsSubscribedToNewsLetter { get; set; }
public byte MembershipTypeId { get; set; }
[MinimumAge(18)]
public DateTime? BirthDate { get; set; }
}
public class CustomerEditDataViewModel
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public IEnumerable<MembershipType> MembershipType { get; set; }
public bool IsSubscribedToNewsLetter { get; set; }
public byte MembershipTypeId { get; set; }
[DataType(DataType.Date)]
[MinimumAge(18)]
public DateTime? BirthDate { get; set; }
}
解决方案
推荐阅读
- r - 在geom_col中为特定“年份”添加所有正负值后如何绘制柱形图?
- java - 理解代码流程:菱形运算符和匿名类
- python - groupby 上的 Numpy 渐变
- php - Can't perform POST requests in Laravel test for API routes
- python - 有没有办法从 Python 中的特定单元格开始编写数据帧
- flutter - [Flutter][BLoC] 返回上一个小部件时出错
- python - 当我使用烧瓶 + uwsgi + nginx 将烧瓶部署到服务器时,多进程无法在烧瓶中工作
- android - React Native Video,如何动态更改源?
- python - 从较大列表中提取子列表后,如何获取列表中元素的跨度?
- php - 聊天消息以相反的顺序显示