MVC Mapping - RedirectToAction无法正常工作

时间:2012-01-26 20:37:59

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我有一个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 个答案:

答案 0 :(得分:4)

我认为问题是因为您的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 } 
            ); 

答案 1 :(得分:0)

我认为Shark是对的,尝试将你的路线图分成两个这样的定义(我没有测试过)

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 }
        );