Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery API控制器中的MVC4模型验证服务器端_Jquery_Asp.net Mvc_Asp.net Mvc 3_Validation_Asp.net Mvc 4 - Fatal编程技术网

Jquery API控制器中的MVC4模型验证服务器端

Jquery API控制器中的MVC4模型验证服务器端,jquery,asp.net-mvc,asp.net-mvc-3,validation,asp.net-mvc-4,Jquery,Asp.net Mvc,Asp.net Mvc 3,Validation,Asp.net Mvc 4,我有一个管理员视图,视图的一部分是一些用于注册新用户的文本框。我使用RegisterModel类作为视图模型的一部分,以便获得所有客户端验证,但我使用jquery停止表单提交,使用jquery确认客户端验证,然后使用ajax将模型发送到API控制器 这是我的RegisterModel的精简版本 [Required(ErrorMessage = "User Name Required")] public string UserName { get; set; } [Required(ErrorMe

我有一个管理员视图,视图的一部分是一些用于注册新用户的文本框。我使用RegisterModel类作为视图模型的一部分,以便获得所有客户端验证,但我使用jquery停止表单提交,使用jquery确认客户端验证,然后使用ajax将模型发送到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()的内容

您可以使用

if (ModelState.IsValid) {
在验证模型的操作中

ie

你可以用

if (ModelState.IsValid) {
在验证模型的操作中

ie


好的,如果要验证服务器端,必须执行以下操作:

[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)。

确定,因此如果要验证服务器端,必须执行以下操作:

[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).

您是在询问服务器端验证吗?如果您谈到客户端验证,请确保您在web.config中启用了不引人注目的验证,并且当您尝试提交表单时,该过程将自动进行。如果您谈论服务器端,请使用
If(Model.IsValid){/*Save*/}else{/*返回Model*/}
这就是我在问题标题中所说的……您是在询问服务器端验证吗?如果您谈论客户端验证,请确保您在web.config中启用了不引人注目的验证,并且当您尝试提交表单时,该过程将自动进行。如果您谈论服务器端使用
If(Model.IsValid){/*Save*/}else{/*return view with Model*/}
,这就是我在问题标题中所说的……另外,作为一个完整而简单的例子,创建一个新的MVC 3项目,并且控制器中的所有验证逻辑都已经存在并正在运行。@RyanJMcGowan:当然,感谢您注意到这一点:)对于生成的逻辑,他不需要创建新的项目,而是创建一个新的控制器,例如使用实体框架的CRUD模板。在使用EF时,了解所有的验证方法也很有用。另外,对于一个完整而简单的示例,创建一个新的MVC 3项目,控制器中的所有验证逻辑都已经存在并运行了。@RyanJMcGowan:当然,感谢您注意到这一点:)对于生成的逻辑,他不需要创建新的项目,而是创建一个新的控制器,例如使用实体框架的CRUD模板。当使用EF时,了解所有的验证方法也是很有用的。啊,太简单了!出于某种原因,我认为ModelSate.IsValid不能在API控制器中工作,所以我又一次在头脑中把事情复杂化了。谢谢啊,太简单了!出于某种原因,我认为ModelSate.IsValid不能在API控制器中工作,所以我又一次在头脑中把事情复杂化了。谢谢