mvc冲突路线

时间:2011-07-05 03:50:53

标签: asp.net-mvc-3 asp.net-mvc-routing

我有两条路线满足两个不同的网址。我怎样才能消除歧义?

取决于列表中的第一个是哪个被选中。

downloadFile和isEdit都是可以为空的bool。

context.MapRoute("Asset_GetImage", "Admin/{controller}/{action}/{assetId}/{downloadFile}");
context.MapRoute("News_Read", "Admin/{controller}/{action}/{newsId}/{isEdit}");

感谢

2 个答案:

答案 0 :(得分:4)

根本不需要单独的路线;您正在收集每个数据类型完全相同的数据类型。

只需将assetIdnewsId更改为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}不在路线中,但默认设置仍然设置,因此它知道如何处理它