Asp.net mvc 3 是否有解决MVC控制器操作的CA1062的首选方法?
对以下操作运行代码分析会导致CA1062警告,建议我在使用参数之前验证参数:Asp.net mvc 3 是否有解决MVC控制器操作的CA1062的首选方法?,asp.net-mvc-3,code-analysis,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 Ar
[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”之外进行验证
我认为当MVC无法进行映射时,模型参数在开发期间可以为null,但我认为在正常操作期间不应该为null
在我看来,正如警告所指出的,检查您的参数并不是坏事。我认为当MVC无法进行映射时,模型参数在开发期间可以为null,但我认为在正常操作期间不应该为null
在我看来,正如警告所指出的,检查您的参数并不是坏事。这是一种公共方法,因此您不应该假设谁将调用它。虽然一个调用方(MVC框架)可能只调用具有非空值的方法,但其他潜在调用方可能不太“礼貌”
也就是说,如果您的代码没有其他潜在的调用者(这对于MVC应用程序来说并不罕见,与库相反),那么允许抛出NullReferenceException而不是ArgumentNullException可能是完全可以接受的。这在很大程度上取决于您对代码库的未来使用和可维护性的期望。(除其他事项外,未来的维护开发人员可能会发现,如果通过ArgumentNullException发出信号,则更容易识别问题。)这是一种公共方法,因此您不应该假设谁将调用它。虽然一个调用方(MVC框架)可能只调用具有非空值的方法,但其他潜在调用方可能不太“礼貌” 也就是说,如果您的代码没有其他潜在的调用者(这对于MVC应用程序来说并不罕见,与库相反),那么允许抛出NullReferenceException而不是ArgumentNullException可能是完全可以接受的。这在很大程度上取决于您对代码库的未来使用和可维护性的期望。(除其他事项外,未来的维护开发人员可能会发现,如果通过异常发出信号,则更容易识别问题。)