是否可以将一个路由映射到MVC中的一组特定控制器操作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以将一个路由映射到MVC中的一组特定控制器操作?相关的知识,希望对你有一定的参考价值。

假设我有两组类似的控制器动作:

Photos/OriginalList/{filterBy}
Photos/PhotoShopList/{filterBy}

Photos/OriginalSingle/{id}/{filterBy}
Photos/PhotoShopSingle/{id}/{filterBy}

在这两个组中,filterBy是可选的。

有没有办法创建可以将类似操作组合在一起的路由,还是我需要为每个操作创建显式路由?

我试过这样的东西,但它不起作用:

routes.MapRoute(name: "FilteredPhotoList", url: "Photos/{action=*List}/{filterBy}", defaults: new {
    controller = "Photos",
    action = "OriginalList",
    filterBy = UrlParameter.Optional
}, namespaces: new string[] { "BetterExample" });

routes.MapRoute(name: "FilteredPhotoSingle", url: "Photos/{action=*Single}/{id}/{filterBy}", defaults: new {
    controller = "Photos",
    action = "OriginalSingle",
    filterBy = UrlParameter.Optional
}, namespaces: new string[] { "BetterExample" });
答案

我将明确定义每个路由以获得更好的可读性和代码清洁度。

以上是关于是否可以将一个路由映射到MVC中的一组特定控制器操作?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC教程五:ASP.NET MVC中的路由

如何将特定列单元格映射到同一张表中的其他特定列单元格?

ASP.Net MVC 路由映射

mvc——URL路由_1_定义路由(映射url到动作方法)

.Net Core Mvc 路由

为啥在 asp.net mvc 中的公共路由之前先映射特殊路由?