我有一个管理员视图,部分视图是一些用于注册新用户的文本框。我正在使用RegisterModel类作为我的视图模型的一部分,以便我获得所有客户端验证,但我使用jquery停止表单提交,使用jquery确认验证客户端,然后将模型发送到API控制器AJAX。
这是我的RegisterModel的精简版。
[Required(ErrorMessage = "User Name Required")]
public string UserName { get; set; }
[Required(ErrorMessage = "Email Required")]
[RegularExpression("REGEX", ErrorMessage = "Invalid Email")]
public string Email { get; set; }
[Required(ErrorMessage = "Password Required")]
public string Password { get; set; }
[Compare("Password", ErrorMessage = "Passwords do not match")]
public string ConfirmPassword { get; set; }
这是我的API控制器中Register方法的开始:
[HttpPost]
public void Register (RegisterModel newUser)
{
// Validate User
}
如何利用我的所有数据注释并在API控制器中验证我的模型?像newUser.Validate();
之类的东西答案 0 :(得分:4)
您可以使用
if (ModelState.IsValid) {
在验证模型的操作中。
即;
[HttpPost]
public void Register (RegisterModel newUser)
{
if (ModelState.IsValid) {
//process form data
}
}
答案 1 :(得分:4)
好的,所以如果你想验证服务器端,你必须这样做:
[HttpPost]
public void Register (RegisterModel newUser)
{
if (ModelState.IsValid)
{
// Model valid, can save
/* Save and redirect */
}
else
{
// Model not valid returned by ASP.Net and Entity Framework
return View(newUser); // return view including current model with errors
}
}
注意:
当您致电ModelState.IsValid
时,会强制验证您的模型。验证模型意味着ASP.Net将验证您的.Net数据注释,实体框架将验证您的实体框架数据注释,实体框架将验证您的自定义业务逻辑。
ModelState.IsValid
是您可以信任的属性,用于在保存之前验证您的数据,它将处理未在客户端进行的所有验证(因为不支持或禁用JavaScript)。