亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 RegularExpressionAttribute 返回失敗正則表達式的字符串

如何使用 RegularExpressionAttribute 返回失敗正則表達式的字符串

C#
jeck貓 2022-11-13 13:56:04
我編寫了有效的正則表達式,并返回錯誤消息供用戶查看。在我的例子中,我正在驗證一個字符串數組(電子郵件),我希望用戶知道哪個字段失敗了,而不僅僅是一條通用消息。有沒有辦法返回失敗的字符串?我可以編寫自己的正則表達式處理系統,該系統將遍歷字符串并返回正則表達式失敗的那些。不過確實感覺有點不對勁,因為 .net 讓我能夠在我的模型上執行正則表達式。如果它失敗了,也許我弄錯了模型正則表達式的功能。它失敗。而且我只能知道哪個模型失敗了,而不是哪個特定對象。我查看了以下文檔: https ://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.regularexpressionattribute?view=netframework-4.7.2但是,我找不到任何返回對象的選項。但可能忽略了它。    [Display(Name = "Admin Emails")]    [RegularExpression(@"[a-z0-9!#$%&' * +/=?^ _`{|}~-]+(?:\.[a-z0-     9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-     9](?:[a-z0-9-]*[a-z0-9])?",    ErrorMessage = "Admin needs a valid email")]    public List<string> AdminEmails { get; set; }我的控制器只是檢查模型        if (!ModelState.IsValid)        {            return BadRequest(ModelState);        }我想要的是返回類似“admin@admin 需要是有效電子郵件”的錯誤消息
查看完整描述

1 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

如果我們創建一個自定義屬性,如下所示:


 public class EmailsCustomAttribute : ValidationAttribute

    {

        public EmailsCustomAttribute(string pattern)

        {

            this.Pattern = pattern;

        }


        public string Pattern { get; }


        protected override ValidationResult IsValid(object value, ValidationContext validationContext)

        {

            Regex regex = new Regex(Pattern);

            List<string> emails = value as List<string>;

            string errorMessage = string.Empty;

            foreach (var item in emails)

            {

                if (!regex.IsMatch(item))

                {

                    errorMessage += this.ErrorMessage.Replace("{0}", item);

                }

            }

            ValidationResult validationResult = new ValidationResult(errorMessage);


            return validationResult;

        }

    }

并將其用作以下內容:


public class TestModel

    {

        [EmailsCustom(@"[a-z0-9!#$%&' * +/=?^ _`{|}~-]+(?:\.[a-z0- 

    9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0- 

    9](?:[a-z0-9-]*[a-z0-9])?", ErrorMessage = "{0} is invalid email")]

        public List<string> Emails { get; set; }

    }


查看完整回答
反對 回復 2022-11-13
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號