1

我有一个管理员视图,视图的一部分是一些用于注册新用户的文本框。我正在使用 RegisterModel 类作为我的视图模型的一部分,以便获得所有客户端验证,但我正在停止使用 jquery 提交表单,使用 jquery 确认验证客户端,然后将模型发送到 API 控制器阿贾克斯。

这是我的 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 控制器中注册方法的开始:

[HttpPost]
public void Register (RegisterModel newUser)
{
   // Validate User

}

如何利用我的所有数据注释并在我的 API 控制器中验证我的模型?类似 newUser.Validate();

4

2 回答 2

4

您可以使用

if (ModelState.IsValid) {

在验证模型的操作中。

IE;

[HttpPost]
public void Register (RegisterModel newUser)
{
     if (ModelState.IsValid) {
     //process form data

      }

}
于 2013-09-03T09:29:22.640 回答
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 数据注释,Entity Framework 将验证您的 Entity Framework 数据注释,而 Entity Framework 将验证您的自定义业务逻辑。

ModelState.IsValid是您可以信任的属性,用于在保存之前验证您的数据,它将处理所有未在客户端进行的验证(因为不支持或禁用 JavaScript)。

于 2013-09-03T09:33:08.557 回答