这个当前的项目我试图获得一个注册表并通过验证。我是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; }
}
答案 0 :(得分:4)
没有模型绑定就没有验证,因为你没有进行任何模型绑定,所以ModelState永远不会无效。
您需要以某种方式绑定模型,方法是更改方法参数以获取模型类型,或者调用UpdateModel或TryUpdateModel。