URL-адрес страниц razor в области с префиксом

Так что я много искал здесь по нескольким темам и изучал британские страницы. но я что-то не могу понять.

так что на моей настройке у меня есть область

Identity
    /pages
    /account
    /login
services
    .AddMvc(cfg =>
    {
        cfg.UseCentralRoutePrefix(new RouteAttribute(path));
    })

на моих контроллерах это работает как шарм. Но похоже, что на моих бритвенных страницах это не почитается.

так что теперь я должен написать это в моем * .cshtml.

@page "~/PREFIX/identity/account/login2"

но я не хочу писать это на всех своих страницах. Могу ли я сделать это легко с помощью условных обозначений бритвы в области?

.AddRazorPagesOptions(options => {...}); ???

person Roelant M    schedule 26.04.2019    source источник


Ответы (1)


Маршрутизация Razor Pages настраивается через соглашениях, и на него не влияют модель приложения, которая используется в MVC. Чтобы применить настраиваемое соглашение, которое влияет на все страницы в области, вы можете настроить таргетинг на область и корневую папку, используя что-то вроде следующего:

services.AddMvc()
    .AddRazorPagesOptions(o =>
    {
        o.Conventions.AddAreaFolderRouteModelConvention("Identity", "/", pageRouteModel =>
        {
            foreach (var selectorModel in pageRouteModel.Selectors)
                selectorModel.AttributeRouteModel.Template = "PREFIX/" + selectorModel.AttributeRouteModel.Template;
        });
    });

В этом примере настраивается соглашение для корня (с использованием /) области Identity, которое выполняет итерацию по всем существующим шаблонам и добавляет PREFIX/ к каждому.

person Kirk Larkin    schedule 26.04.2019