首页 > 解决方案 > 如何在 mvc core 3.1 中的操作方法名称中允许多个连字符?

问题描述

我正在开发一个应用程序,其中要求以以下格式显示 url 以进行 seo。

Initial format = www.abc.com/Home/OnlineShoppingInUk

Required format = www.abc.com/online-shopping-in-uk

我已经在 start.cs 中进行了以下更改以从 url 中隐藏控制器名称,并且从 url 中删除了控制器名称

     endpoints.MapControllerRoute(
                    name: "onlineShoppingInUk",
                    pattern: "onlineShoppingInUk",
                    defaults: new { controller = "Home", action = "onlineShoppingInUk" });

and in home controller

     [Route("onlineShoppingInUk")]
     public IActionResult OnlineShoppingInUk()
    {
    ....
    }

但是当 url 包含连字符时,上述方法不起作用。我尝试过以下但在线购物操作方法从不调用,而是调用索引方法。

endpoints.MapControllerRoute(
                    name: "online-shopping-in-uk",
                    pattern: "online-shopping-in-uk",
                    defaults: new { controller = "Home", action = "online-shopping-in-uk" });

在家庭控制器中

     [Route("online-shopping-in-uk")]
     public IActionResult OnlineShoppingInUk()
    {
    ....
    }

如何在 Home 控制器中调用包含连字符的操作方法?

标签: asp.net-core-mvcurl-routingasp.net-core-3.1

解决方案


请使用以下代码更新您的路线配置。

endpoints.MapControllerRoute(
                name: "OnlineShoppingInUK",
                pattern: "/online-shopping-in-uk",
                defaults: new { controller = "Home", action = "OnlineShoppingInUK" });

从您的方法中删除 Route :

public IActionResult OnlineShoppingInUK()
    {
    ....
    }

试试这个:

www.abc.com/online-shopping-in-uk

另外,您在哪里调用它只是使用

asp-route="OnlineShoppingInUK"


推荐阅读