5

我有一个名为的控制器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

4

1 回答 1

6

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

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

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

于 2013-06-01T11:54:20.907 回答