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

时间:2019-04-26 18:42:31

标签: c# asp.net-core razor-pages asp.net-core-2.2

因此,我在这里的许多主题和学习剃须刀的页面上都非常关注。但我无法弄清楚。

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

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

在我的控制器上,它就像一个符咒。但是在我的剃须刀页面上,这似乎没有兑现。

所以现在我必须将其写在我的* .cshtml中。

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

但是我不想在我所有的页面上写这个。 我可以在某个区域使用剃刀惯例轻松做到这一点吗?

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

1 个答案:

答案 0 :(得分:2)

Razor Pages路由是通过conventions配置的,不受MVC中使用的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/添加到每个模板中。