2015-10-13 52 views
-2

我需要知道如何在asp.net MVC中實現可選驗證。像我LoginViewModel我有3個領域(1)電子郵件,(2)用戶名(3)密碼在查看用戶可以在同一個輸入框中輸入電子郵件或密碼,如果我把[必填]都在電子郵件用戶名字段它不工作。所以讓我知道我在這種情況下如何處理它。ASP.Net中的可選驗證MVC

感謝 Sohaib賈韋德

+0

您的視圖中有多少個輸入框?你說用戶可以在同一個輸入框中輸入電子郵件或密碼。所以1用於電子郵件/密碼和1用戶名? – singsuyash

+0

爲什麼你沒有每個領域的輸入框? – Ala

+0

我有一個輸入框,用戶可以輸入電子郵件或用戶名,正如我們在facebook中看到的,用戶可以在同一輸入框中選擇輸入電子郵件或電話號碼。 –

回答

1

雖然我不同意,你應該有一個單一的輸入字段爲passwordemail address,這裏是你會如何在控制器內執行有效性驗證您的來電瀏覽模式:

public ActionResult Index(LoginViewModel requestResponseModel) 
{ 
    // Has an email or password been entered? 
    if (string.IsNullOrWhiteSpace(requestResponseModel.EmailOrPassword)) 
    { 
      this.ModelState.AddModelError("EmailOrPassword", "Please enter an email or a password"); 
    } 
    else 
    { 
     try 
     { 
      // Is the input a valid email address? 
      var addr = new System.Net.Mail.MailAddress(email); 
      return addr.Address == email; 
     } 
     catch 
     { 
      // Not valid email, is it a valid password? 
      if (System.Text.regularExpressions.Regex.IsMatch(requestResponseModel.EmailOrPassword, "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$")) 
      { 
       this.ModelState.AddModelError("EmailOrPassword", "Value entered is not a valid email address or password"); 
      } 
     } 
    } 

    // Did it pass validation? 
    if (this.ModelState.IsValid()) 
    { 
     // Register the user here... 
    } 

    return View(requestResponseModel); 
} 

你也可以在你的視圖模型的IValidatableObjectValidate()方法中實現相同的代碼。您可以在模型上使用[Required],並在控制器內使用此驗證。