Asp.net MVC2 URL结构 - 最佳实践

时间:2010-11-20 04:31:58

标签: c# asp.net-mvc-2

在asp.net MVC2中设置具有多个接口的项目的最佳实践是什么?我正在开始一个项目,我们需要一个典型的安排,如:

example.com/ - 最终用户界面

example.com/Admin/ - 网站管理

该网站将足够参与,只需在HomeController中拥有所有用户逻辑,并且AdminController中的所有管理逻辑都不是真正的选项。我已经阅读了有关使用多个Route定义的内容,但以下内容似乎无法正常工作:

routes.MapRoute(
            "Admin", // Route name
            "Admin/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Admin", 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
        );

它会导致主页上的所有链接指向example.com/Admin/local-part而不是example.com/local-part。

我想避免为每个管理控制器指定不同的MapRoute(每次从映射中省略{controller})。

我还阅读了关于在项目中设置不同区域的内容,但这似乎是涉及到该项目的范围。

最后,我还读到你可以对MapRoutes设置约束,但是那部分的文档似乎让我感到困惑。有什么明显的东西我不见了吗?如果不这样做,我应该记住asp.net结构的最佳实践吗?

1 个答案:

答案 0 :(得分:2)

听起来,Area已经准备好了你想做的事情。设置area实际上并不是所有涉及的,基本上你只需要注册它。默认情况下,区域路由将匹配global.asax中的默认值,例外是url中的额外“\ area”slug。我很确定几个月前我在一个项目上设置它时只花了几分钟。

如果管理控制器的复杂程度足以超出单个控制器的范围,那么表明可能需要保证区域。