Как переопределить значение по умолчанию и удалить любой необязательный URL для области на страницах Razor? - PullRequest
0 голосов
/ 19 сентября 2019

В области с именем «Administration» URL-адрес ~/Administration, но как скрыть его без этих стандартных или дополнительных?Я хочу назвать эту область чем-то не связанным.

Попробовал

options.Conventions.AddAreaPageRoute("/Administration", "/Index", "toothbrush");

У этого по-прежнему была возможность использовать URL-адрес по умолчанию, и мне пришлось бы скопировать / вставить это для всехстраницы в области (?).

Также пробовал

options.Conventions.AddAreaFolderRouteModelConvention("Administration", "/", pageRouteModel =>
{
    foreach (var selectorModel in pageRouteModel.Selectors)
        selectorModel.AttributeRouteModel.Template = "toothbrush/" + selectorModel.AttributeRouteModel.Template;
});

Но это сделало URL похожим на ~/toothbrush/administration?И не уверен, что это правильный путь.

Я ценю ваше время и помощь.

1 Ответ

0 голосов
/ 20 сентября 2019

Если вы хотите заменить часть «Администрирование» URL-адреса, скажем, «Зубная щетка», вы можете использовать PageRouteModelConvention:

public class ToothbrushPageRouteModelConvention : IPageRouteModelConvention
{
    public void Apply(PageRouteModel model)
    {
        if (model.RelativePath.StartsWith("/Areas/Administration"))
        {
            var selector = model.Selectors.First(s => s.AttributeRouteModel.Template.StartsWith("Administration/"));
            selector.AttributeRouteModel.Template = selector.AttributeRouteModel.Template.Replace("Administration/", "Toothbrush/");

        }
    }
}

Вы регистрируете это при запуске:

services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.Add(new ToothbrushPageRouteModelConvention());
}

Подробнее здесь: https://www.learnrazorpages.com/advanced/custom-route-conventions

...