2017-04-22 22 views
1

我是mvc development.i的新手,使用validationResult進行驗證的電子郵件文本框。我們有要求逐個添加多個電子郵件。因此,我們需要檢查郵件是否是正確format.this的代碼進行驗證:如何使用逗號在單行中加入列表字符串?

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
{   
    var results = new List<ValidationResult>(); 
    var Emailvaild = new Regex(@"^([a-za-z0-9_\-\.]+)@((\[[0-9]{1,3}" + @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-za-z0-9\-]+\" + @".)+))([a-za-z]{2,4}|[0-9]{1,3})(\]?)$"); 
    foreach (VEmail em in Emails) 
    { 
     if (!Emailvaild.IsMatch(em.Email)) 
     { 
      results.Add(new ValidationResult(em.Email + " is an invaild", new List<string> { string.Empty })); 
     } 
    } 

    return results; 
} 

這是working.each時間的電子郵件進行驗證,如果它是不正確的,它顯示驗證消息。但是每次它都將信息顯示在另一個下面。例如,如果我有20封電子郵件,並且每封電子郵件格式不正確。所以它顯示20個信息一個在另一個之下。我想用逗號加入電子郵件。

回答

1

您當前的代碼爲循環迭代中的每個錯誤郵件添加新的ValidationResult對象。您可以將其移出foreach循環,並將錯誤的電子郵件添加到循環中的另一個集合中,並使用string.join方法創建字符串,該字符串是該集合中的項目的逗號分隔列表(錯誤電子郵件),並將其用於您的單個ValidationResult對象。

var results = new List<ValidationResult>(); 
var wrongEmails = new List<string>(); 
foreach (VEmail em in Emails) 
{ 
    if (!Emailvaild.IsMatch(em.Email)) 
    { 
     wrongEmails.Add(em.Email); 
    } 
} 
if(wrongEmails.Any()) 
{ 
    results.Add(new ValidationResult("Below emails are not good!" 
               + string.Join(",",wrongEmails), 
               new List<string> { string.Empty })); 
} 
return results; 
+0

謝謝,您的解決方案正在爲我工​​作 –

相關問題