Asp.net core 将子文件夹路由到根URL
在Razor pages项目中,我必须覆盖ASP.NET标识的默认UI。除了特定的页面要求之外,我不希望URL像“/Identity/Account/Whatever”-我的页面将是/login、/logout等 但是,我仍然希望将身份验证页面分组到一个子文件夹中(不是为了污染顶部文件夹),而是从“根”URL为它们提供服务 目前,为了实现这一点,我在Startup.cs中有以下代码Asp.net core 将子文件夹路由到根URL,asp.net-core,razor-pages,asp.net-core-razor-pages,Asp.net Core,Razor Pages,Asp.net Core Razor Pages,在Razor pages项目中,我必须覆盖ASP.NET标识的默认UI。除了特定的页面要求之外,我不希望URL像“/Identity/Account/Whatever”-我的页面将是/login、/logout等 但是,我仍然希望将身份验证页面分组到一个子文件夹中(不是为了污染顶部文件夹),而是从“根”URL为它们提供服务 目前,为了实现这一点,我在Startup.cs中有以下代码 services.AddRazorPages(options => { options.Conventi
services.AddRazorPages(options =>
{
options.Conventions.AddPageRoute("/Auth/Login", "login");
options.Conventions.AddPageRoute("/Auth/Logout", "logout");
options.Conventions.AddPageRoute("/Auth/ResetPassword", "resetpassword");
...
});
Can this be achieved with folder convention? Also I don't want to have /auth/{page} URLs still working (which is a problem with the current approach).
您可以通过定制来实现这一点 您可以像下面这样更改代码
services.AddRazorPages(options =>
{
options.Conventions.AddPageRoute("/Auth/Login", "login");
options.Conventions.AddPageRoute("/Auth/Logout", "logout");
options.Conventions.AddPageRoute("/Auth/ResetPassword", "resetpassword");
options.Conventions.AddFolderRouteModelConvention("/", model =>
{
var selectorCount = model.Selectors.Count;
for (var i = selectorCount - 1; i >= 0; i--)
{
var selectorTemplate = model.Selectors[i].AttributeRouteModel.Template;
if (selectorTemplate.StartsWith("Auth"))
model.Selectors.RemoveAt(i);
}
});
});
嗨@Georg,有关于这个案子的最新消息吗?
services.AddRazorPages(options =>
{
options.Conventions.AddPageRoute("/Auth/Login", "login");
options.Conventions.AddPageRoute("/Auth/Logout", "logout");
options.Conventions.AddPageRoute("/Auth/ResetPassword", "resetpassword");
options.Conventions.AddFolderRouteModelConvention("/", model =>
{
var selectorCount = model.Selectors.Count;
for (var i = selectorCount - 1; i >= 0; i--)
{
var selectorTemplate = model.Selectors[i].AttributeRouteModel.Template;
if (selectorTemplate.StartsWith("Auth"))
model.Selectors.RemoveAt(i);
}
});
});