代码之家  ›  专栏  ›  技术社区  ›  Brian

ASP.NET MVC2 URL结构-最佳实践

  •  0
  • Brian  · 技术社区  · 14 年前

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

    example.com/-最终用户界面

    example.com/admin/-站点管理

    该站点将涉及到足够多的内容,因此在homecontroller中简单地拥有所有的用户逻辑和在admincontroller中拥有所有的管理逻辑实际上不是一个选项。我已经阅读过有关使用多个路由定义的内容,但以下内容似乎无法正常工作:

    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。

    我希望避免为每个管理控制器指定不同的映射路由(每次都从映射中省略控制器)。

    我也读过关于在一个项目中设置不同区域的文章,但这似乎是 参与本项目的范围。

    最后,我还了解到您可以对maproutes设置约束,但这部分的文档对我来说似乎很混乱。有什么明显的我不见了吗?如果不能做到这一点,我是否应该记住ASP.NET结构的任何最佳实践?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Ken Henderson    14 年前

    听起来这个区域已经为你想做的做好了准备。设置 area 不是所有的事情,基本上你只需要注册就行了。默认情况下,区域路由将匹配global.asax中的默认值,例外情况是URL中的额外\area“段塞。我相当肯定,几个月前我在一个项目上设置这个只花了几分钟。

    如果您的管理控制器非常复杂,超过了单个控制器的范围,那么这表示可能需要一个区域。