asp.net-mvc-3 - 为什么此代码返回没有 ViewName 的 View 结果?

标签 asp.net-mvc-3

我在名为 AdminController 的 Controller 内有一些代码。

public ActionResult Login()
{
    AdminModel model = new AdminModel();
    return View(model);
}

当我在测试方法中检查 View 时...

 var result = controller.Login();

 //assert
 Assert.IsInstanceOfType(result, typeof(ViewResult));
 Assert.AreEqual("Login", ((ViewResult)result).ViewName);

它不显示 View 名称。但是登录 View 肯定会返回。我想知道为什么没有设置 View 名称?我以为它默认为操作结果方法名称?

最佳答案

仅当您在返回 View 时设置了 viewName 参数时,才会设置 ViewName。例如:

return View("Login", model);

否则,如果未设置 View 名称,它将使用默认 View 。

因此,要测试默认 View ,您的断言应编写为:

Assert.AreEqual("", ((ViewResult)result).ViewName);

关于asp.net-mvc-3 - 为什么此代码返回没有 ViewName 的 View 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530401/

相关文章:

asp.net - 是否有内置的 C# 函数来生成有效的 CSS 类名?

c# - ASP.Net MVC3 下拉列表和传递数据

asp.net-mvc-3 - 我如何模拟查询字符串

asp.net-mvc - [授权]失败后显示404错误页面

asp.net-mvc - 流畅的 API 和数据注释

html - 布局/HTML 中的 MVC 4 错误

.net - Orchard 和 Facebook

asp.net-mvc-3 - ASP.NET MVC3 : Do I need to use a MembershipProvider?

asp.net-mvc-3 - 基于 MVC3 razor 的 htmlhelper,具有基于模型的 lambda 字段表达式

vb.net - ASP.NET MVC3 - VB 中的 If 语句