【发布时间】:2009-08-06 14:37:32
【问题描述】:
控制器如何知道要返回哪些视图?我认为这是通过命名约定,但我看到了一些实例,例如在 Nerd Dinner 应用程序中,名称不匹配。我在哪里或如何看到这个映射?谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc viewusercontrol
控制器如何知道要返回哪些视图?我认为这是通过命名约定,但我看到了一些实例,例如在 Nerd Dinner 应用程序中,名称不匹配。我在哪里或如何看到这个映射?谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc viewusercontrol
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
【讨论】:
有三种方法可以指定视图名称。
按惯例
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")
}
这最后一个只看这个地方,你指定的地方。
【讨论】:
它基于Controller中Action的名称。这是一个例子:
我有一个名为 UserController 的控制器。
我对该控制器的一个操作名为 Index。
当我说返回 View();
它将在 Views 目录中的 User 文件夹中查找 Index.aspx 或 Index.ascx
它还会在共享文件夹中查找。
【讨论】: