【问题标题】:Asp.net MVC2 URL structure - best practicesAsp.net MVC2 URL 结构 - 最佳实践
【发布时间】:2010-11-20 04:31:58
【问题描述】:

在 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 结构的最佳实践?

【问题讨论】:

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


    【解决方案1】:

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

    如果您的 Admin 控制器足够复杂,超出了单个控制器的范围,则表明可能需要一个区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多