ASP.NET MVC4服务器端验证

时间:2014-11-04 08:20:32

标签: c# asp.net-mvc-4

这个当前的项目我试图获得一个注册表并通过验证。我是C#和ASP.NET MVC4的新手。我试图阻止用户被添加到传入的Post数据的集合是无效的。这是我的控制器代码,后面是我的User类,其中包含使用System.ComponentModel.DataAnnotations的规则

如果数据无效,那么我想抛出一个自定义错误(我还没有开始实现它)。

控制器:

[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; }
    }

1 个答案:

答案 0 :(得分:4)

没有模型绑定就没有验证,因为你没有进行任何模型绑定,所以ModelState永远不会无效。

您需要以某种方式绑定模型,方法是更改​​方法参数以获取模型类型,或者调用UpdateModel或TryUpdateModel。