如何验证模型的字符串可以在10到30个字符之间,或者为空- c# ASP.NET

本文关键字:或者 之间 字符 30个 NET ASP 验证 何验证 模型 字符串 | 更新日期: 2023-09-27 18:07:38

我试图在包含电话号码的模型上使用Required属性验证传入的JSON。有两个电话号码属性,一个是Primary(必需的),一个是Alternate。对于Alternate,我希望空字符串是有效的,但是1到9个字符和超过30个字符的字符串是无效的。这行不通:

public class PhoneCreateModel
{
    [Required(AllowEmptyStrings = false,
        ErrorMessageResourceName = "PrimaryPhoneNumberRequired",
        ErrorMessageResourceType = typeof(DataAnnotationMessage))]
    [StringLength(30, MinimumLength = 10,
        ErrorMessageResourceName = "PrimaryPhoneNumberFormat",
        ErrorMessageResourceType = typeof(DataAnnotationMessage))]
    public string Primary { get; set; }
    [StringLength(30, MinimumLength = 10,
        ErrorMessageResourceName = "AlternatePhoneNumberFormat",
        ErrorMessageResourceType = typeof(DataAnnotationMessage))]
    public string Alternate { get; set; }
}

…因为它不允许Alternate为空字符串。我怎么能允许它是一个空字符串或10-30个字符之间?

如何验证模型的字符串可以在10到30个字符之间,或者为空- c# ASP.NET

您可以实现您自己的验证属性。这比看起来要容易,只要做一个扩展ValidationAttribute的类,并在IsValid函数中实现你的逻辑。

下面是一个例子:http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/custom-data-annotations-or-custom-validation-attributes-in-m/