c# - 如何使用 DataAnnotations & Regex - c# - ASP.NET Core
问题描述
我正在使用数据注释来匹配用户为错误处理目的而输入的字段。
每当他们输入不正确的格式时,它就会打印实际的正则表达式,我想知道是否有办法删除“匹配以下正则表达式”并只打印错误消息。
我的表单示例和显示的错误消息: 表单
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace FoodCart.Models
{
public class Order
{
public int ID { get; set; }
[Display(Name = "First Name")]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
[Required(ErrorMessage = "This field is required")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
[Required(ErrorMessage = "This field is required")]
public string LastName { get; set; }
[Required(ErrorMessage = "This field is required")]
public string Address { get; set; }
[Required(ErrorMessage = "This field is required")]
public string City { get; set; }
[Required(ErrorMessage = "This field is required")]
public string State { get; set; }
[Required(ErrorMessage = "This field is required")]
public string Zip { get; set; }
[Display(Name = "Name on Card")]
[Required(ErrorMessage = "This field is required")]
public string NameonCard { get; set; }
[Display(Name = "Credit Card Number")]
[Required(ErrorMessage = "This field is required, input valid 16 digit number")]
[RegularExpression(@" ([0 - 9][0 - 9][0 - 9][0 - 9]) ([0 - 9][0 - 9][0 - 9][0 - 9]) ([0 - 9][0 - 9][0 - 9][0 - 9]) ([0 - 9][0 - 9][0 - 9][0 - 9])")]
public string CreditCardNum { get; set; }
[Display(Name = "Expiration Date")]
[Required(ErrorMessage = "This field is required, input valid expiration date: MM/YY")]
[RegularExpression(@"([0-9][0-9])\/([0-9][0-9])")]
public string ExpDate{ get; set; }
[Display(Name = "CVV")]
[RegularExpression(@"([0-9][0-9][0-9])")]
[Required(ErrorMessage = "This field is required")]
public string cvv { get; set; }
[Display(Name = "Total")]
public decimal YourTotal { get; set; }
public int UserLinkID { get; set; }
}
}
解决方案
验证属性都带有一个内置在实现中的默认错误消息。对于RegularExpressionAttribute
,此错误消息如下:
字段 {0} 必须与正则表达式“{1}”匹配。
占位符{0}
将是正在验证的属性的显示名称,并且{1}
将是正则表达式本身。
有几种方法可以自定义此错误消息,使用验证属性上的属性之一。最简单的方法是直接使用ErrorMessage
属性指定错误消息。请注意,如果您愿意,您仍然可以引用占位符{0}
(用于字段名称)和{1}
(用于正则表达式):
[Display(Name = "First Name")]
[RegularExpression(@"^[a-zA-Z'-\s]{1,40}$", ErrorMessage = "The field {0} is not a valid name")]
public string FirstName { get; set; }
推荐阅读
- angular - 在 ngFor 循环中动态地将类添加到元素
- python - 使用 SQLAlchemy 按属性或相关属性查询
- sql - 如何从 SQL 中不相关的表中获取参考值
- google-chrome - Chrome 不保留后退按钮上的滚动位置
- spring - Spring Boot 属性 yaml
- php - 如何执行在php中的字符串中找到的代码
- r - 仅将时间序列中的 NA 向后替换为有限数量的观测值
- javascript - 如果在 [未定义] 上进行测试
- c# - C# 强制静态字段
- apache-kafka - apache kafka partiton log下Position的值是什么?