Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 将子文件夹路由到根URL_Asp.net Core_Razor Pages_Asp.net Core Razor Pages - Fatal编程技术网

Asp.net core 将子文件夹路由到根URL

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

在Razor pages项目中,我必须覆盖ASP.NET标识的默认UI。除了特定的页面要求之外,我不希望URL像“/Identity/Account/Whatever”-我的页面将是/login、/logout等

但是,我仍然希望将身份验证页面分组到一个子文件夹中(不是为了污染顶部文件夹),而是从“根”URL为它们提供服务

目前,为了实现这一点,我在Startup.cs中有以下代码

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);
                        }
                    });
                });