【问题标题】:can not map a route for a specific controller in mvc 4无法在 mvc 4 中为特定控制器映射路由
【发布时间】:2013-05-28 03:46:11
【问题描述】:

我有一个名为 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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多