2

控制器如何知道要返回哪些视图?我认为这是通过命名约定,但我已经看到了一些实例,例如在 Nerd Dinner 应用程序中,名称不匹配。我在哪里或如何看到这个映射?谢谢。

4

3 回答 3

6
public class EmployeesController
{
    public ViewResult Index()
    {
        return View("CustomerName");
    }
}

将搜索:

Views/Employees/CustomerName.aspx
Views/Employees/CustomerName.ascx
Views/Shared/CustomerName.aspx
Views/Shared/CustomerName.ascx

差不多就是这样。。

当您返回 View(); 在不指定名称的情况下,它会搜索与控制器操作同名的视图。在这种情况下,Index.aspx

于 2009-08-06T14:40:41.027 回答
2

有三种方法可以指定视图名称。

按照惯例

public ActionResult MyAction {
  return View()
}

这将查找具有操作方法名称的视图,即“MyAction.ascx”或“MyAction.aspx”

** 按名字 **

public ActionResult MyAction {
  return View("MyViewName")
}

这将查找名为“MyViewName.ascx”或“MyViewName.aspx”的视图。

** 按应用路径 **

public ActionResult MyAction {
  return View("~/AnyFolder/MyViewName.ascx")
}

最后一个只看这个地方,你指定的地方。

于 2009-08-08T05:14:04.120 回答
0

它基于 Controller 中的 Action 的名称。这是一个例子:

我有一个名为 UserController 的控制器。

我对该控制器的一项操作名为 Index。

当我说 return View();

它将在 Views 目录中的 User 文件夹中查找 Index.aspx 或 Index.ascx

它还将在共享文件夹中查找。

于 2009-08-06T14:41:19.887 回答