Member 10371658 Ответов: 1

Как установить url.actionlink для главного контроллера приложения из контроллера области.


я работаю в приложении MVC 5, в котором у меня есть основное приложение, и в одном приложении есть две области(Admin,Billing). в главном приложении, админке и биллинговой зоне есть HomeController. я установил маршрут по умолчанию для биллинговой зоны Billcontroller в файле main application RouteConfig.cs: см. ниже:
public static void RegisterRoutes(RouteCollection routes)
      {
          routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

          //routes.MapRoute(
          //    name: "Default",
          //    url: "{controller}/{action}/{id}",
          //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
          //    namespaces: new string[] { "MvcAreaDemoApp.Controllers" }
          //);

          routes.MapRoute(
             name: "Default",
             url: "{controller}/{action}/{id}",
             defaults: new { controller = "Bill", action = "Index", id = UrlParameter.Optional }
          , namespaces: new string[] { "MvcAreaDemoApp.Controllers" }
         ).DataTokens["area"] = "Billing";
      }

Когда я пытаюсь перейти в основное приложение Home controller method, я не перенаправляю на home controller для основного приложения, он идет в те же области homecontroller method.

Что я уже пробовал:

<a href="@Url.Action("Index","Home", new { area="" })">Dashboard</a>

1 Ответов

Рейтинг:
0

Richard Maly

Я не думаю, что вам нужен сегмент "new {area = ""}"
так что просто,

<a href="@Url.Action("Index","Home")">Dashboard</a>

если вы используете области, то вам нужно использовать что-то вроде
@Url.Action("Method", "Controller", new {Area = "AreaName"})

при загрузке страницы вы всегда можете проверить, на что указывает url-адрес, используя инструменты разработчика браузера. например в chrome щелкните правой кнопкой мыши проверить
Если URL-адрес такой, как вы ожидаете, и он все еще не работает, то, вероятно, ваш маршрут неверен. Мой выглядит так
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);


Member 10371658

это не основное применение, это будет для индексного метода способ оплаты HomeController области.

Richard Maly

В этом случае вам действительно нужна часть области, но введите имя области, а не пустые кавычки. Область - это имя папки

Member 10371658

я хочу выйти за пределы области, имею в виду основное приложение, у меня есть основное приложение, в котором у меня есть две области, и я установил маршрут по умолчанию для контроллера области в файле main application routeconfig.cs.