Как определить конечную точку Маршрут к нескольким областям - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь определить MapAreaControllerRoute, который направляет на несколько областей, но в 3.0 есть свойство areaName:, которое необходимо установить. Я не понимаю, как я могу использовать ОДИН маршрут, чтобы быть действительным для нескольких областей.

Я прочитал много вопросов здесь, но кажется, что это новинка в MVC Core 3.0. В MVC Core <= 2.2 вы можете создать MapRoute, не определяя заданное значение areaName. </p>

Как и сейчас, в Startup.cs я определяю свои конечные точки как:

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapAreaControllerRoute(
                    name: "Area1",
                    areaName: "Area1",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
                    );

               endpoints.MapAreaControllerRoute(
                    name: "Area2",
                    areaName: "Area2",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
                    );

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");


            });

Конечно, долженбыть способ определить только один маршрут, чтобы охватить все области?

BR Per

1 Ответ

0 голосов
/ 12 октября 2019

Хорошо, так что после прочтения дополнительной связки, это оказывается случаем отсутствия атрибутов для контроллеров области! Помечая контроллеры следующими тегами:

[Area("Area1")]
[Route("Area1/[controller]/[action]")]
public class Area1Controller : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

и изменяя маршруты на:

        app.UseEndpoints(endpoints =>
        {
                endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");

            endpoints.MapAreaControllerRoute(
                name: "areas",
                areaName: "areas",
                pattern: "{area}/{controller=Home}/{action=Index}/{id?}"
                );
    }

все, кажется, работает как ожидалось.

...