2015-10-13 48 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],并在控制器内使用此验证。