带有前缀的区域中的剃刀页面 url

razor pages url in area with prefix

所以我在这里看了很多关于几个主题和学习razorpages。但我想不通。

所以在我的设置中我有区域

Identity
    /pages
    /account
    /login
services
    .AddMvc(cfg =>
    {
        cfg.UseCentralRoutePrefix(new RouteAttribute(path));
    })

在我的控制器上,这非常有效。但在我的剃须刀页面上,这似乎没有得到尊重。

所以现在我必须在我的 *.cshtml 中写这个。

@page "~/PREFIX/identity/account/login2"

但我不想在所有页面上都写这个。 我可以在某个区域使用剃须刀公约轻松做到这一点吗?

.AddRazorPagesOptions(options => {...}); ???

Razor Pages 路由是通过 MVC 中使用的 conventions and is not affected by the application model 配置的。为了应用影响区域中所有页面的自定义约定,您可以使用如下内容定位区域和根文件夹:

services.AddMvc()
    .AddRazorPagesOptions(o =>
    {
        o.Conventions.AddAreaFolderRouteModelConvention("Identity", "/", pageRouteModel =>
        {
            foreach (var selectorModel in pageRouteModel.Selectors)
                selectorModel.AttributeRouteModel.Template = "PREFIX/" + selectorModel.AttributeRouteModel.Template;
        });
    });

此示例为 Identity 区域的根(使用 /)配置约定,它遍历所有现有模板并向每个模板添加 PREFIX/