MVC Mapping - RedirectToAction не работает - PullRequest
2 голосов
/ 27 января 2012

У меня есть проект MVC с отображением по умолчанию, которое я изменил на:

routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
                new { controller = "Home", action = "Index", 
                      id = UrlParameter.Optional, arg = UrlParameter.Optional }
            );

следующих контроллеров:

/ Controllers / HomeController.cs:

public ActionResult Index(int? id)
{        
    return RedirectToAction("Index", "EPOS");
}

/ Controllers / EPOSController.cs:

public ActionResult Index(int? id)
{
    return View();
}

В HomeController достигается точка останова, но в EPOSController я не получаюэта ошибка:

Ни один маршрут в таблице маршрутов не соответствует предоставленным значениям.

Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 27 января 2012

Я считаю, что проблема в том, что ваш Default маршрут неверен:

routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}", 
                new { controller = "Home", action = "Index",  
                      id = UrlParameter.Optional, arg = UrlParameter.Optional } 
            ); 

У вас не может быть необязательного параметра, предшествующего обязательному параметру. Что произойдет, если вы измените вышеуказанный маршрут на этот?

routes.MapRoute("Default", "{controller}/{action}/{id}/{arg}", 
                new { controller = "Home", action = "Index",  
                      id = UrlParameter.Optional, arg = UrlParameter.Optional } 
            ); 
0 голосов
/ 27 января 2012

Я думаю, что Акула права, попробуйте разбить вашу карту маршрутов на два определения примерно так (я не проверял это)

routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
            new { controller = "Home", action = "Index", 
                  arg = UrlParameter.Optional }
        );
routes.MapRoute("Default", "{controller}/{id}",
            new { controller = "Home", action = "Index", 
                  id = UrlParameter.Optional }
        );
...