为什么是控制器.视图返回null
本文关键字:返回 null 视图 控制器 为什么 | 更新日期: 2023-09-27 18:08:42
我正在对别人的ASP进行单元测试。Net MVC4控制器动作方法。最后一行是:
return this.View("ConfirmAddress", addressModel);
在我的单元测试中返回null
。控制器。视图文档说第一个参数是视图名称,但我不能进入这个方法来找出为什么返回null
。ConfirmAddress.cshtml
存在于Views文件夹中,但控制器中也有ConfirmAddress(AddressModel am)
动作。
谁能从这个告诉它应该做什么(例如,也许使用RedirectToAction
代替??)我尽量保持这个简短,但可以提供更多的信息,如果需要的话…
我已经查看了Controller
类的官方源代码,看看当View
被调用时会发生什么。结果是,所有不同的View
方法重载最终调用以下方法:
protected internal virtual ViewResult View(string viewName, string masterName, object model)
{
if (model != null)
{
ViewData.Model = model;
}
return new ViewResult
{
ViewName = viewName,
MasterName = masterName,
ViewData = ViewData,
TempData = TempData,
ViewEngineCollection = ViewEngineCollection
};
}
此方法(以及所有其他重载)将永远不会返回NULL,尽管它可能抛出异常。它是虚拟的,这意味着你调用的代码可能会用自定义实现覆盖它,并返回NULL。您可以检查View
方法是否在任何地方被覆盖吗?
View方法有可能被重写。尝试删除this
量词。
return View("ConfirmAddress", addressModel);