是否有一种解决CA1062 for MVC控制器操作的首选方法?

时间:2011-11-29 19:57:29

标签: asp.net-mvc-3 code-analysis

对以下操作运行代码分析会产生CA1062警告,建议我在使用前验证参数:

[HttpPost]
public ActionResult Index(SomeViewModel vm)
{
    if (!ModelState.IsValid)
        return View(vm);

    // ... other code 

    return View(vm);
}

我意识到我可以通过添加以下内容来解决警告:

if(vm==null)
    throw new ArgumentNullException("vm");

我的印象是,如果默认模型绑定成功,传入参数永远不会为null,并且不需要在“ModelState.IsValid”之外进行验证。

  1. 是这样吗?
  2. 是否有广泛接受的技术来解决MVC操作的此警告?

2 个答案:

答案 0 :(得分:1)

我认为当MVC无法进行映射时,模型参数在开发期间可以为null,但我认为在正常操作期间它不应该。

在我看来,检查你的参数作为警告指出是不错的。

答案 1 :(得分:0)

这是一种公共方法,所以你不应该假设谁会调用它。虽然一个调用者(MVC框架)可能只调用具有非空值的方法,但其他潜在的调用者可能不那么“礼貌”。

那就是说,如果你的代码没有其他潜在的调用者(这对于MVC应用程序来说并不常见,而不是库),允许抛出NullReferenceException而不是ArgumentNullException可能是完全可以接受的。这在很大程度上取决于您对未来使用和代码库可维护性的期望。 (除此之外,如果通过ArgumentNullException发出信号,未来的维护开发人员可能会发现更容易识别问题。)