我正在测试其他人的ASP.Net MVC4 Controller操作方法。它的最后一行是:
return this.View("ConfirmAddress", addressModel);
这会在我的单元测试中返回null
。 Controller.View documentation表示第一个参数是视图名称,但我无法进入此方法以找出返回null
的原因。 “视图”文件夹中存在ConfirmAddress.cshtml
,但控制器中还有ConfirmAddress(AddressModel am)
个操作。
任何人都可以告诉它它应该做什么(例如,可能使用RedirectToAction
而不是???)试图保持这个简短,但如果需要可以提供更多信息......
答案 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);