0

我需要模拟对我来说有点奇怪的路线。以下是他们希望我做的事情:

/AssetManagement -> Asset Landing page
/AssetManagement/Add -> Add an asset
/AssetManagement/Edit -> Edit an asset
/AssetManagement/Locations -> Locations landing page
/AssetManagement/Locations/Add -> Add a location
/AssetManagement/Locations/Edit -> Edit a location

我不确定,但我认为这需要用两个控制器建模。资产控制器和位置控制器。我认为视图添加/编辑/索引将存在于受尊重的视图文件夹下,我可能会定义两条路线:

routes.MapRoute(
    "AssetManagement", // Route name
    "AssetManagement/{action}/{id}", // URL with parameters
    new { controller = "Assets", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
    new[] { "MyApplication.Web.Website.Controllers" }
);

routes.MapRoute(
    "AssetManagementLocations", // Route name
    "AssetManagement/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Locations", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
    new[] { "MyApplication.Web.Website.Controllers" }
);

我只是觉得有点不对劲。我错过了处理东西的最佳实践吗?这会导致什么样的问题?他们希望我构建的很多系统都是这样工作的。

// 编辑 如果这是一个不好的地方问这样的问题,我应该在哪里问他们?

4

2 回答 2

1

您可以做的是创建一个区域。

在该区域创建 2 个控制器,一个用于资产,另一个用于位置。

而不是玩路由(这可能很危险)玩MVC概念。

您指定的第二条路线与区域密切相关。当您创建区域时,会自动为您创建路线。希望这可以帮助。

Area - AssetManagement
   Controller1 - HomeController 
              Action1 - Add
              Action2 - Delete 

   Controller2 - LocationsController
              Action1 - Add
              Action2 - Delete 

routes.MapRoute(
    "AssetManagementLocations", // Route name
    "{Area}/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Locations", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
    new[] { "MyApplication.Web.Website.Controllers" }
);
于 2012-11-14T21:07:46.080 回答
1

查看属性路由项目。您可以将 Nuget 安装到 mvc 中并使用路径装饰您的操作方法或控制器 - 这可以明确哪些路由映射到哪个控制器/方法

https://github.com/mccalltd/AttributeRouting/wiki/2.-Usage

于 2012-11-14T21:47:44.783 回答