[ValidateModel]与ASP.NET中的有效状态检查有什么区别?

[ValidateModel]与ASP.NET中的有效状态检查有什么区别?,asp.net,asp.net-mvc,asp.net-web-api,asp.net-web-api2,Asp.net,Asp.net Mvc,Asp.net Web Api,Asp.net Web Api2,我看到一些用于模型验证的代码: [ValidateModel] 以及其他代码,例如使用此进行模型验证的示例WebAPI: if (!ModelState.IsValid) { return BadRequest(ModelState); } 有人能解释一下区别是什么吗?例如,为什么来自Microsoft的示例WebAPI应用程序不只是使用[ValidateModel]?你确定你有现成的[ValidateModel]属性吗?因为自定义属性有助于使代码更简洁,因为您可以省

我看到一些用于模型验证的代码:

 [ValidateModel]
以及其他代码,例如使用此进行模型验证的示例WebAPI:

  if (!ModelState.IsValid)
  {
     return BadRequest(ModelState);
  }

有人能解释一下区别是什么吗?例如,为什么来自Microsoft的示例WebAPI应用程序不只是使用[ValidateModel]?

你确定你有现成的
[ValidateModel]
属性吗?因为自定义属性有助于使代码更简洁,因为您可以省略控制器中的
ModelState.IsValid
语句,因为如果实现了操作,则其模型数据已经有效。我浏览了互联网,所有的
[ValidateModel]
实现都有类似的
ModelState。IsValid
code语句:

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]
是自定义属性,需要额外的空间进行解释和实现,所以大多数教程更喜欢开箱即用的
ModelState。ValidateModelAttribute是开箱即用的框架类吗?或者您正在使用自定义库?MVC中没有
ValidateModelAttribute
。假设你指的是什么?