2014-11-04 152 views
0

這個當前的項目我想獲得一個註冊表單並通過驗證。我對C#和ASP.NET MVC4相當陌生。我試圖阻止用戶被添加到傳入的Post數據的集合無效。這是我的控制器代碼,其次是我的用戶類與規則使用System.ComponentModel.DataAnnotationsASP.NET MVC4服務器端驗證

如果數據是無效的,那麼我想拋出一個自定義錯誤(我還沒有開始實現這一點)。

控制器:

[HttpPost] 
     public ActionResult Confirm(FormCollection form) 
     { 
      string firstName = form["textFirstName"]; 
      string lastName = form["textLastName"]; 
      string email1 = form["textEmail"]; 
      string password1 = form["passwordPW1"]; 

      User newUser = new User { fName = firstName, lName = lastName, email = email1, password = password1 }; 

      if (ModelState.IsValid) 
      { 
       _users.Add(newUser); 
      } 
      return RedirectToAction("Login", "Countdown"); 
     } 

型號

public class User 
    { 
     [Required] 
     [StringLength(50, MinimumLength = 1)] 
     public String fName { get; set; } 

     [StringLength(50)] 
     public String lName { get; set; } 

     [Required] 
     [RegularExpression(@"^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$")] 
     public String email { get; set; } 

     [Required] 
     [StringLength(50, MinimumLength = 4)] 
     public String password { get; set; } 
    } 
+0

有什麼問題? – theLaw 2014-11-04 08:24:52

+0

當我通過它無效輸入它仍然會將用戶添加到集合。 – 2014-11-04 08:26:18

+1

您似乎正在手動執行模型聯編程序將自動執行的操作。將您的方法簽名更改爲'Confirm(User data)',並確保HTML中的字段名稱與屬性名稱匹配(您可以使用@ Html.TextBoxFor()等)。然後你的驗證屬性將起作用。 – GSerg 2014-11-04 08:26:20

回答

4

有沒有模型綁定沒有驗證,因爲你沒有做任何模型綁定,ModelState中永遠不會失效。

您需要以某種方式綁定模型,方法是更改​​方法參數以獲取模型類型,或者調用UpdateModel或TryUpdateModel。