我希望有一种方法可以为目录中的所有页面指定路由模板,以避免必须使用@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/"),
}
});
}
});
})