контроллер с тем же именем в другой области - PullRequest
1 голос
/ 17 мая 2019

Возвращает контроллер ambiguos с тем же именем. Я попробовал некоторый код, как routeAttribute [Route] и [Area], но безуспешно.Я использую Asp.net Core MVC - C #

структурированный

case 1:
redirection = RedirectToAction("Index", "Home", new { area = "first" }); ;
break;
case 2:
redirection = RedirectToAction("Index", "Home", new { area = "second" });
break;

Мой маршрут:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Login}/{action=Index}/{id?}");
        });

        app.UseMvc(routes =>
        {
            routes.MapRoute(
              name: "areas",
              template: "{area:exists}/{controller=Admin}/{action=Index}/{id?}"
           );

            //routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
            //routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");

        });

[Microsoft.AspNetCore.Authorization.AllowAnonymous]
    [Area("first")]
    public class HomeController : Controller
    {
        [Route("first")]

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Logout()
        {
            return RedirectToAction("Logout", "Login");
        }

    }

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Объедините определения вашего маршрута в один вызов UseMvc, и всегда используйте ваш маршрут по умолчанию последним, порядок имеет значение.

app.UseMvc(routes =>
{
  routes.MapRoute(
    name: "areas",
    template: "{area:exists}/{controller=Admin}/{action=Index}/{id?}"
  );

  routes.MapRoute(
    name: "default",
    template: "{controller=Login}/{action=Index}/{id?}");
  });
});

Попробуйте и посмотрите, исправит ли он маршруты для вас.Я не вижу ничего сверх очевидных проблем с вашим кодом, кроме этого, но я бы не стал называть ваш маршрут "первым", если область называется "первым".Я чувствую, что это просто запутает вещи.

Возможно, вам захочется очистить ваши значения по умолчанию для ваших контроллеров.

Я знаю, что вы пытаетесь, возможно, я 'я делал это много раз в моем коде.Если это все еще не работает, дайте нам знать.

0 голосов
/ 17 мая 2019

Будет ли это работать?

case 1:
    redirection = Area.first.Controllers.HomeController.RedirectToAction("Index", "Home", new { area = "first" }); ;
    break;
case 2:
    redirection = Area.second.Controllers.HomeController.RedirectToAction("Index", "Home", new { area = "second" });
    break;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...