Я хотел бы иметь возможность указать шаблон маршрута для всех страниц в каталоге, чтобы избежать необходимости указывать пользовательский маршрут на каждой странице с помощью директивы @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/"),
}
});
}
});
})