[ValidateModel] 和 ASP.NET 中的有效状态检查有什么区别?
What is the difference between [ValidateModel] and a check of valid state in ASP.NET?
我看到一些用于模型验证的代码:
[ValidateModel]
和其他代码,例如使用它进行模型验证的示例 WebAPI:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
任何人都可以解释有什么区别以及为什么 Microsoft 的示例 WebAPI 应用程序不只是使用 [ValidateModel] 吗?
您确定 [ValidateModel]
属性开箱即用吗?因为 according to this link 它是自定义属性,有助于使代码更清晰一些,因为您可以在控制器中省略 ModelState.IsValid
语句,因为如果动作实现了,它的模型数据已经有效。我浏览了互联网,所有 [ValidateModel]
实现都有类似的 ModelState.IsValid
代码语句:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.ModelState.IsValid == false)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
我不确定,但我认为,因为 [ValidateModel]
是自定义属性,需要额外的 space 来解释和实现,所以大多数教程更喜欢开箱即用 ModelState.IsValid
.
我看到一些用于模型验证的代码:
[ValidateModel]
和其他代码,例如使用它进行模型验证的示例 WebAPI:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
任何人都可以解释有什么区别以及为什么 Microsoft 的示例 WebAPI 应用程序不只是使用 [ValidateModel] 吗?
您确定 [ValidateModel]
属性开箱即用吗?因为 according to this link 它是自定义属性,有助于使代码更清晰一些,因为您可以在控制器中省略 ModelState.IsValid
语句,因为如果动作实现了,它的模型数据已经有效。我浏览了互联网,所有 [ValidateModel]
实现都有类似的 ModelState.IsValid
代码语句:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.ModelState.IsValid == false)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
我不确定,但我认为,因为 [ValidateModel]
是自定义属性,需要额外的 space 来解释和实现,所以大多数教程更喜欢开箱即用 ModelState.IsValid
.