Применить соглашение о маршрутизации папки ко всем страницам бритвы в каталоге - PullRequest
0 голосов
/ 02 марта 2019

Я хотел бы иметь возможность указать шаблон маршрута для всех страниц в каталоге, чтобы избежать необходимости указывать пользовательский маршрут на каждой странице с помощью директивы @page.Допустим, у меня есть следующая структура каталогов для моего приложения Razor.

/Pages/Movies 
/Pages/Movies/Actors

Теперь для каждой страницы в папке Actors я хочу, чтобы маршрут всегда включал параметр {movieId} в качестве сегмента.непосредственно перед сегментом Actors, таким как:

/Movies/{movieId}/Actors/Index

Один из способов сделать это - изменить директиву @page на каждой странице в папке Actors, как показано ниже:

@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/"),
                        }
                    });
                }
            });
        })
...