在控制器中创建子文件夹

时间:2009-11-17 13:40:37

标签: .net asp.net-mvc

如何在ASP.NET MVC 1中执行子文件夹。例如,在控制器上采用以下文件夹结构:

/Controller
  /Blog
     ViewsController.cs
     ArticlesController.cs
  /Customers
     SalesController.cs
     ProductsController.cs
  HomeController.cs

我想在视图中有以下文件夹结构,每个视图都找到了你的控制器:

/Views
  /Blog
     /Views
        Index.aspx
        Admin.aspx
        Show.aspx
     /Articles
        Show.aspx
        Admin.aspx
  /Customers
     /Sales
        Index.aspx
        Totals.aspx
     /Products
        Index.aspx
        Promotions.aspx
  /Home
     Index.aspx

4 个答案:

答案 0 :(得分:8)

这是ASP.NET MVC 2.0中添加的一项功能。它被称为Areas

答案 1 :(得分:4)

您可以使用路线,即

routes.MapAreaRoute("Blogs", 
        "Blog/Views/{controller}/{action}/{id}", 
        new { controller = "Views", action = "Index", id = "" });

根据上述数据,这似乎符合您的需求。

答案 2 :(得分:3)

在MVC 2或更高版本中,您只需右键单击项目,然后将鼠标悬停在添加上,然后单击“区域”,并输入该区域的名称。一切都是为你自动创造的!

答案 3 :(得分:1)

正如Darin所说,Area似乎是开发人员实现这一目标的“预期”方式。如果您可以等到2月,您可以考虑使用MVC 2预览。但是,在引入带有MVC 2的区域之前,开发人员正在做类似的事情。如果您需要更直接的解决方案,可以将控制器放在上面指定的文件夹结构中。假设控制器根据其文件夹命名(即 Project.Controllers.Blog ),您只需在末尾添加一个额外参数,以指定初始化路由时控制器的命名空间。

例如:

routes.MapAreaRoute("Blog", 
    "Blog/{controller}/{action}/{id}", 
    new { controller = "Articles", action = "Index", id = "" },
    "Project.Controllers.Blog");