Asp.net 核心 MVC 使动作在路由中可选

Asp.net core MVC make action optional in routing

我正在尝试管理我的项目的路由设置,但我并不了解所有内容,我想在 url 中将一些操作或控制器名称设为可选。

例如,我有一个带有“SignIn()”操作的控制器“HomeController”,我希望它可以通过 url“/signin”而不是“/home/signin”访问。

对于名为“ProjectsController”且具有操作“Details(int id)”的控制器,我希望它可以通过“/projects/348”而不是“/projects/details/348”访问。

我没有修改默认端点配置:

endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

如何让一些控制器名称和动作名称可选?在那之后我仍然可以使用标签助手来链接 asp-controller 和 asp-action ?

我认为你必须使用路由属性。例如,对于您的登录操作

    public partial class HomeController : Controller
    {
        [Route("~/signin")]
        public IActionResult SignIn()
        {
            .....
        }
    }

并使用相同的模板进行其他特殊操作

你也可以为一个动作设置多条路线

        [Route("~/signin")]
        [Route("~/home/signin")]
        public IActionResult SignIn()
        {
            .....
        }