无法在mvc 4中映射特定控制器的路由

时间:2013-06-01 11:31:39

标签: asp.net-mvc asp.net-mvc-4 routing asp.net-mvc-routing

我有一个名为Registration的控制器,其中的操作方法如下:

public JsonResult GetReqs(GridSettings gridSettings, int rt)
    {
        ...//whatever

        return Json(jsonData, JsonRequestBehavior.AllowGet);
    }

所以我添加了一条路线,现在我的RouteConfig.cs就像这样:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "RegReq",
            url: "{Registration}/{GetReqs}/{rt}",
            defaults: new { controller = "Registration", action = "GetReqs", rt = UrlParameter.Optional }
        );

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

但是我无法访问rt参数,并且未调用操作方法GetReqs(我在其上设置了断点,但没有发生任何事情)。错误在哪里?

修改:我尝试过的链接示例:~/Registration/GetReqs/1

1 个答案:

答案 0 :(得分:6)

我认为您需要删除第一条路线中的括号:

routes.MapRoute(
            name: "RegReq",
            url: "Registration/GetReqs/{rt}",
            defaults: new { controller = "Registration", action = "GetReqs", 
              rt = UrlParameter.Optional }
        );

默认路由有{controller}告诉MVC使用url该部分中的字符串作为控制器名称。你知道控制器,所以你只需要匹配特定的字符串。