2013-08-27 6 views
1

У меня есть следующий маршрут карты в моей конфигурации маршрута. Это первый маршрут перед чем-либо еще.Настройка действия в контроллере и области как страница по умолчанию

routes.MapRoute(
       "HomePage", 
       "", 
       new { area = "Accessibility", controller = "Cardholders", action = "Index" } 
       ); 

Однако, когда я осматриваю свой веб-сайт в браузере, я получаю

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Cardholders/Index.aspx 
~/Views/Cardholders/Index.ascx 
~/Views/Shared/Index.aspx 
~/Views/Shared/Index.ascx 
~/Views/Cardholders/Index.cshtml 
~/Views/Cardholders/Index.vbhtml 
~/Views/Shared/Index.cshtml 
~/Views/Shared/Index.vbhtml 

У меня нет никаких проблем, когда я просматриваю мое действие непосредственно http://localhost:54358/accessibility/cardholders/index

То, что я хочу добиться, чтобы ввести http://localhost:54358 и перенаправляется на http://localhost:54358/accessibility/cardholders/index

Основываясь на ответах ниже, я пробовал

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new {controller = "Cardholders", action = "Index", id = UrlParameter.Optional}, 
       // Parameter defaults 
       new[] { "Plan.Web.Mvc.Areas.Accessibility.Controllers" } 
       ); 

и

routes.MapRoute(
       "HomePage", 
       "Accessibility_Default", 
       "Accessibility/{controller}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
       ); 

и

routes.MapRoute(
       "HomePage", 
       "Accessibility_Default", 
       "Accessibility/{controller}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
      ); 

Все, кажется, не работает.

ответ

1

Я попробую ответить на свой вопрос.

Это своего рода обходное решение, и я надеюсь, что это поможет.

Я создал новый раздел под названием «Главная», а в этой области - контроллер «HomeController».

В зоне регистрации на "Home", у меня есть

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute("", "", defaults: new { controller = "Home", action = "Index", area = "Home" }); 

    context.MapRoute(
     "Home_default", 
     "Home/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

И в моем HomeController, у меня есть этот

public ActionResult Index() 
    { 
     return RedirectToAction("Index", "Cardholders", new { area = "Accessibility" }); 
    } 
0

попробовать что-то вроде этого

routes.MapRoute(
       "HomePage", 
       "Accessibility_Default", 
       "Accessibility/{controller}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
       ); 

Надеется, что это поможет вам.

Для получения дополнительной информации, пожалуйста, следуйте here и here

+0

Это не работает –

0

Попробуйте

  routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "controller Name", action = "action name", id = UrlParameter.Optional }, // Parameter defaults 
      new[] { "Your Area Controller Namespace" } 
     ); 
+0

Не работает слишком –

0

уступи идти, вам просто нужно заменить MyApp с именем вашего проекта.

Пример

routes.MapRoute(
    "HomePage", 
    "", 
    new { action = "Index" }, 
    new { controller = "Cardholders" }, 
    new[] { "MyApp.Areas.Accessibility.Controllers" } 
); 

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

+0

I Я заменил MyApp на Plan.Web.Mvc, это имя моего проекта, но не работает –

Смежные вопросы