为什么是控制器.视图返回null

本文关键字:返回 null 视图 控制器 为什么 | 更新日期: 2023-09-27 18:08:42

我正在对别人的ASP进行单元测试。Net MVC4控制器动作方法。最后一行是:

return this.View("ConfirmAddress", addressModel);

在我的单元测试中返回null。控制器。视图文档说第一个参数是视图名称,但我不能进入这个方法来找出为什么返回nullConfirmAddress.cshtml存在于Views文件夹中,但控制器中也有ConfirmAddress(AddressModel am)动作。

谁能从这个告诉它应该做什么(例如,也许使用RedirectToAction代替??)我尽量保持这个简短,但可以提供更多的信息,如果需要的话…

为什么是控制器.视图返回null

我已经查看了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);