Jquery API控制器中的MVC4模型验证服务器端
我有一个管理员视图,视图的一部分是一些用于注册新用户的文本框。我使用RegisterModel类作为视图模型的一部分,以便获得所有客户端验证,但我使用jquery停止表单提交,使用jquery确认客户端验证,然后使用ajax将模型发送到API控制器 这是我的RegisterModel的精简版本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
[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控制器中工作,所以我又一次在头脑中把事情复杂化了。谢谢