返回的ViewName为空

1 asp.net asp.net-mvc

我正在执行单元测试并检查我的控制器操作是否返回正确的视图但由于某种原因它总是返回空字符串.

  [When(@"when I go to the search page")]
        public void WhenTheUserGoesToTheSearchScreen()
        {
            _controller = new HomeController();
            _result = _controller.Search(); 
        }

        [Then(@"the search view should be displayed")]
        public void ThenTheSearchViewShouldBeDisplayed()
        {
            Assert.AreEqual("Search",(_result as ViewResult).ViewName); // ViewName is empty!
        }
Run Code Online (Sandbox Code Playgroud)

The*_*yce 6

ViewName除非从控制器操作IE返回时传递视图的字符串名称,否则该属性将始终为空:

public ActionResult Search()
{
    return View("Search");
}
Run Code Online (Sandbox Code Playgroud)

如果您只是返回,View()那么ViewName将是一个空字符串.这很烦人(特别是在使用MVContrib时),但它就是这样.

  • 这实际上是件好事.空视图名称表示调用与操作关联的默认视图.如果为默认视图填写了名称,则更难以区分. (2认同)