如何在 mvc core 3.1 中的操作方法名称中允许多个连字符?

How to allow multiple Hyphen in action method name in 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()
    {
    ....
    }

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

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

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

从您的方法中删除路线:

public IActionResult OnlineShoppingInUK()
    {
    ....
    }

然后试试这个:

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

另外,在你调用它的地方使用

asp-route="OnlineShoppingInUK"