Вы можете создать Конвенцию Razor Pages, которая будет выполняться для всех Razor Pages в определенной папке. С этим соглашением вы можете установить фильтр действий (фильтр результатов) для добавления идентификатора к ViewData.
Фильтр:
class AddRouteIdentifierFilter : ResultFilterAttribute
{
private readonly string identifier;
public TestFilter(string identifier)
{
this.identifier = identifier;
}
public override void OnResultExecuting(ResultExecutingContext context)
{
base.OnResultExecuting(context);
((PageResult)context.Result).ViewData["route-identifier"] = identifier;
}
}
Установка соглашения:
services.AddMvc().AddRazorPagesOptions(opt =>
opt.Conventions.AddFolderApplicationModelConvention("/A", model =>
model.Filters.Add(new AddRouteIdentifierFilter("a"));
);
opt.Conventions.AddFolderApplicationModelConvention("/B", model =>
model.Filters.Add(new AddRouteIdentifierFilter("b"));
);
);
Доступ к идентификатору в представлении Razor Page:
<h1>Identifier: @ViewData["route-identifier"]</h1>