为什么Controller.View返回null?

时间:2013-04-11 11:25:01

标签: c# asp.net-mvc debugging asp.net-mvc-4 controller

我正在测试其他人的ASP.Net MVC4 Controller操作方法。它的最后一行是:

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

这会在我的单元测试中返回nullController.View documentation表示第一个参数是视图名称,但我无法进入此方法以找出返回null的原因。 “视图”文件夹中存在ConfirmAddress.cshtml,但控制器中还有ConfirmAddress(AddressModel am)个操作。

任何人都可以告诉它它应该做什么(例如,可能使用RedirectToAction而不是???)试图保持这个简短,但如果需要可以提供更多信息......

2 个答案:

答案 0 :(得分:1)

我查看了official source code of the Controller class,了解调用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方法是否被覆盖了吗?

答案 1 :(得分:1)

可能会覆盖View方法。尝试删除this量词。

return View("ConfirmAddress", addressModel);