【问题标题】:Create sub folders in the controller without Areas在没有区域的控制器中创建子文件夹
【发布时间】:2012-04-11 22:00:57
【问题描述】:

我正在开发一个 MVC 3 Web 应用程序,我想创建这样的东西:

/Controller
      /Blog
         BogController.cs
         ViewsController.cs
         ArticlesController.cs
      /Customers
         SalesController.cs
         ProductsController.cs          
      HomeController.cs
/Views
     /Blog
        Index.aspx
        Summary.aspx
        /Views
           Index.aspx
           Admin.aspx
           Show.aspx
       /Articles
          Show.aspx
          Admin.aspx
    /Customers
       /Sales
          Index.aspx
          Totals.aspx
       /Products
          Index.aspx
          Promotions.aspx
     /Home
       Index.aspx

Create sub folders in the controller

但是在他们回答这个人的解决方案中是针对 MVC 2 而在 MVC 3 中,属性 MapAreas 没有退出(或者至少在我看来没有)

那么我可以做些什么来构建像 /Admin/Users/EditUser?id=2 这样的结构?

如果我需要创建路由规则,你能给我写一个如何做的例子吗?

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-routing directory-structure


    【解决方案1】:

    考虑使用MVC3 Areas。您可以为此创建一个管理区域。

    【讨论】:

    • 谢谢,但是这样会创建很多员工,最后我会选择创建路线。
    • 我最初在区域首次可用时使用它们,但发现它们的麻烦多于其价值。主要是在每个动作链接中定义区域,许多第三方的点点滴滴不兼容等等。我的两分钱。
    • 更不用说它会弄乱你项目的文件结构
    【解决方案2】:

    路由规则绝对是要走的路。要制作您提到的结构,请像这样编写路由规则:

    routes.MapRoute(
        "user_routing",
        "Admin/{controller}/{action}?id={id}",
        new { }
    );
    

    然后创建一个名为UsersController的控制器,以及一个以id为参数的action:

    public ActionResult EditUser(string id) {
        ...
    }
    

    【讨论】:

    • 谢谢,我正在阅读如何以这种方式进行操作,最后我找到了方法:routes.MapRoute("AdminUsers", "Admin/Users/{action}/{id}",新的{控制器=“AdminUsers”,动作=“索引”,id=UrlParameter.Optional});
    • 问题是如果你仍然有默认路由,这将匹配Admin/[AnyController]//Users 而没有Admin/。我还看到@Html.ActionLinkAdmin/ 路由下生成所有链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多