2015-11-06 42 views
0

我看到,模型验证使用一些代码:[ValidateModel]和ASP.NET中有效状态检查有什么区别?

[ValidateModel] 

和其他代码,如样品的WebAPI使用该模型验证:

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

任何人都可以解释是什么区别,为什么示例将来自Microsoft的示例WebAPI应用程序不只是使用[ValidateModel]?

+1

ValidateModelAttribute是一个开箱即用的框架类吗?或者你在使用自定义库吗? –

+0

MVC中没有'ValidateModelAttribute'。假设你引用[this plugin](https://github.com/jehugaleahsa/TestMvcApplication/blob/master/MvcUtilities/FilterAttributes/ValidateModelAttribute.cs)? –

回答

2

您确定您拥有开箱即用的[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]是自定义属性,需要进行解释和执行额外的空间,所以大多数教程喜欢出去箱子ModelState.IsValid

相关问题