我需要模拟对我来说有点奇怪的路线。以下是他们希望我做的事情:
/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
我不确定,但我认为这需要用两个控制器建模。 AssetsController和LocationsController。我认为视图Add / Edit / Index将存在于受尊重的View文件夹下,我可能会定义两条路径:
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" }
);
我感觉有点不对劲。我错过了处理东西的最佳做法吗?这会导致什么样的问题?他们希望我构建的很多系统都是这样的。
//编辑 如果这是一个提出这样问题的好地方,我应该在哪里问他们?
答案 0 :(得分: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" }
);
答案 1 :(得分:1)
查看attributerouting项目。您可以将Nuget安装到mvc并使用路径装饰您的操作方法或控制器 - 这导致明确意图确切地将哪些路由映射到哪个控制器/方法