.NET Core 3 MVC 中的自定义路由

Custom routing in .NET Core 3 MVC

你能帮我在 .NET Core 3 中创建自定义路由吗?

如果 url 看起来像这样:

 abc.com/tiger-animal

然后我想在 AnimalController 上执行 Index 方法并将 tiger 作为查询字符串或 Id 参数传递。

当 url 看起来像这样时:abc.com/aboutus,路由应该默认执行 Index? method on theaboutus` 控制器。

这意味着我想执行 AnimalController 如果 url 包含最后一个字符串 -animal .

我试过了

  app.UseMvc(routes =>
            {
                routes.MapRoute("blog", "{*id}-animal",
                         defaults: new { controller = "animal", action = "index" });
                routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
            });

但它不起作用。

去掉星号,你应该没问题。
另外值得一提的是,ASP.NET Core 3.0 使用 UseEndpoints 而不是 UseMvc,因此配置路由的正确方法如下:

app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute("blog", "{id}-animal", new { controller = "animal", action = "index" });
        endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
    });