【问题标题】:ASP.NET Core Razor Page - Add the index route to another pageASP.NET Core Razor 页面 - 将索引路由添加到另一个页面
【发布时间】:2019-08-05 15:38:24
【问题描述】:
长话短说:
我有一个页面调用 foo.cshtml,我还想处理索引路由。
即
pages/bar/foo.cshtml
我想导航到
/bar 由 foo 处理。
我讨厌 index.chstml 名称,因为当您加载了 5 个索引页面以获取您正在查看的线索时,这在 IDE 中是一件很痛苦的事情。
是否有一种简单的方法来处理多个路由或更改特定文件夹的默认路由?是的,我知道我可以制作一个重定向的索引页面。宁愿避免混乱。
【问题讨论】:
标签:
asp.net
asp.net-core
razor
【解决方案1】:
您可以使用许多路线,它们是从上到下进行评估的。您可以使用约束来过滤掉路由。
// Routing
app.UseMvc(routes =>
{
// pages/bar/foo.cshtml
routes.MapRoute(
name: "Foo",
template: "{controller}/bar/{action}/{id?}/{id2?}",
defaults: new { controller = "pages", action = "foo" },
constraints: new { controller = "pages" }
);
// User route
routes.MapRoute(
name: "User",
template: "{controller}/{action}/{id?}/{id2?}",
defaults: new { controller = "home", action = "index" },
constraints: new { controller = "user" }
);
// Auth route
routes.MapRoute(
name: "Auth",
template: "{controller}/{action}/{id?}/{id2?}",
defaults: new { controller = "home", action = "index" },
constraints: new { controller = "auth" }
);
// Default route (Controller as default)
routes.MapRoute(
name: "Default",
template: "{action}/{id?}/{id2?}",
defaults: new { controller = "home", action = "category" }
);
});