2014-11-04 7 views
0

Этот текущий проект я пытаюсь получить регистрационную форму и передать ее с помощью проверки. Я довольно новичок в C# и ASP.NET MVC4. Я пытаюсь помешать добавлению пользователя в коллекцию входящих сообщений, является недопустимым. Вот мой код контроллера, за которым следует мой класс User с правилами с использованием System.ComponentModel.DataAnnotationsПроверка на стороне сервера ASP.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

+0

Когда я передаю ему недопустимый ввод, он все равно добавит пользователя в коллекцию. –

+1

Кажется, что вы вручную делаете то, что будет автоматически связываться с моделью. Измените свою подпись метода на «Подтвердить (данные пользователя)» и убедитесь, что имена полей в HTML соответствуют именам свойств (которые вы можете использовать с '@ Html.TextBoxFor() и т. Д.). Тогда ваши атрибуты проверки будут работать. – GSerg

ответ

4

Там нет проверки без привязки модели, и так как вы не делаете любую модель связывания, ModelState никогда не будет считаться недействительным.

Необходимо каким-либо образом привязать модель, либо изменив параметр метода, чтобы взять тип модели, либо вызвав UpdateModel или TryUpdateModel.

Смежные вопросы