.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 the
aboutus` 控制器。
这意味着我想执行 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?}");
});
你能帮我在 .NET Core 3 中创建自定义路由吗?
如果 url 看起来像这样:
abc.com/tiger-animal
然后我想在 AnimalController
上执行 Index
方法并将 tiger
作为查询字符串或 Id
参数传递。
当 url 看起来像这样时:abc.com/aboutus
,路由应该默认执行 Index? method on the
aboutus` 控制器。
这意味着我想执行 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?}");
});