2012-02-25 204 views
0

我正在通过ASP.NET MVC教程工作,无法找到答案即时寻找。MVC3中的层次结构

据我所知,在“控制器”根文件夹中每个控制器类被映射到一个URL,所以:

****Controller Folder**** 
    |- StoreController.cs 

地图来$url/Store

然而,如果我想创建人一个“子文件夹”

iee一个控制器类位于$url/Store/Testing我似乎无法看到我如何去做。 我试着从StoreController.cs派生出一个班,但那没有奏效。

回答

1

URL不一定对应于MVC应用程序的内部文件夹结构。您可以使用MVC路由表来隐藏内部结构并将特定的URL重定向到任何您想要的控制器/操作。例如,您可以创建在Controllers文件夹TestingController.cs类和Global.asax使用这条路线:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Store-Testing", // Route name 
      "Store/Testing/{action}/{id}", // URL with parameters 
      new { controller = "Testing", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

    } 

在这种情况下,http://[domain]/Store/Testing的请求将被TestingController处理。

0

该URL将与默认路由指向Store控制器中名为Testing的操作。

但是,您可以在您的global.asax文件中创建自己的自定义路由。