MVC3中的层次结构

时间:2012-02-25 15:20:45

标签: asp.net-mvc-3

我正在通过ASP.NET MVC教程工作,无法找到我正在寻找的答案。

我知道'Controller'根文件夹中的每个控制器类都映射到一个Url,所以:

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

映射到$url/Store

但是,如果我想创建一个'子文件夹'

即。一个位于$url/Store/Testing的控制器类我似乎无法看到我如何去做。 我尝试从StoreController.cs派生一个类,但这没有用。

2 个答案:

答案 0 :(得分:1)

URL不一定与MVC应用程序内部文件夹结构相对应。您可以使用MVC路由表来隐藏内部结构,并将特定URL重定向到您想要的任何控制器/操作。例如,您可以在TestingController.cs文件夹中创建Controllers类,并在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处理。

答案 1 :(得分:0)

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

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