我有两条路线满足两个不同的网址。我怎样才能消除歧义?
取决于列表中的第一个是哪个被选中。
downloadFile和isEdit都是可以为空的bool。
context.MapRoute("Asset_GetImage", "Admin/{controller}/{action}/{assetId}/{downloadFile}");
context.MapRoute("News_Read", "Admin/{controller}/{action}/{newsId}/{isEdit}");
感谢
答案 0 :(得分:4)
根本不需要单独的路线;您正在收集每个数据类型完全相同的数据类型。
只需将assetId
和newsId
更改为id
,然后相应地对您的控制器进行编码。控制器名称已在URL中。
答案 1 :(得分:2)
您可以使路线更具体。
例如,为每个人指定{controller}
:
context.MapRoute("Asset_GetImage", "Admin/Asset/{action}/{assetId}/{downloadFile}");
context.MapRoute("News_Read", "Admin/News/{action}/{newsId}/{isEdit}");
您只需要确保添加控制器默认值。
作为我的某个应用中的示例:
routes.MapRoute(
"Calendar",
"Account/Calendar/{Year}/{Month}",
new { controller = "Account", action = "Calendar", Year = DateTime.Now.Year, Month = DateTime.Now.Month }
);
{controller}
和{action}
不在路线中,但默认设置仍然设置,因此它知道如何处理它