将文件夹路由约定应用于目录中的所有剃须刀页面

时间:2019-03-02 18:43:05

标签: razor-pages

我希望有一种方法可以为目录中的所有页面指定路由模板,以避免必须使用@page指令在每个页面上指定自定义路由。假设我的Razor应用程序具有以下目录结构。

/Pages/Movies 
/Pages/Movies/Actors

现在,对于Actors文件夹中的每个页面,我都要求路由始终在{movieId}段之前将Actors参数作为段包括在内,例如:

/Movies/{movieId}/Actors/Index

一种方法是修改Actors文件夹内每个页面上的@page指令,如下所示:

@page "/Movies/{movieId}/Actors/Index"

以这种方式在每个页面上使用@page指令似乎很乏味,并且需要了解父目录名称。我觉得应该有一种使用自定义页面约定(例如AddFolderRouteModelConvention)的方法,例如在启动期间执行以下操作,但是我无法使其正常工作:

        .AddRazorPagesOptions(options =>
        {
            options.Conventions.AddFolderRouteModelConvention("/Actors", model =>
            {
                var selectorCount = model.Selectors.Count;
                for (var i = 0; i < selectorCount; i++)
                {
                    var selector = model.Selectors[i];
                    model.Selectors.Add(new SelectorModel
                    {
                        AttributeRouteModel = new AttributeRouteModel
                        {
                            Order = 2,
                            Template = AttributeRouteModel.CombineTemplates(
                                selector.AttributeRouteModel.Template,
                                "{movieId}/Actors/"),
                        }
                    });
                }
            });
        })

0 个答案:

没有答案