0

我正在尝试按如下方式注册路线:

routes.MapRoute(
            "SaleReport", // Route name
            "SaleReport/GetDataConsolidated/{type}",
            new { controller = "SaleReport", 
                  action = "GetDataConsolidated",
                  type =   UrlParameter.Optional});

并在控制器中

public ActionResult GetDataConsolidated(string type)

    {
      return Content("Report Type = " + type);
    }

我这样称呼它:localhost:56674/SaleReport/GetDataConsolidated/Sale

但问题是类型的值始终为空。我究竟做错了什么 ?

4

2 回答 2

0

这可能只是.MapRoute(...)调用顺序。

将您的“SaleReport”.MapRoute(...)电话放在“默认”电话之前{controller}/{action} .MapRoute(...),因为它更具体。

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

    routes.MapRoute(
        name: "SaleReport",
        url: "SaleReport/GetDataConsolidated/{type}",
        defaults: new { controller = "SaleReport", action = "GetDataConsolidated", type = UrlParameter.Optional });

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
于 2013-02-16T10:54:52.437 回答
0

是否需要定义另一条地图路线?

它应该与默认路由一起使用,

routes.MapRoute(
        "SaleReport", // Route name
        "SaleReport/GetDataConsolidated/{type}",
        new { controller = "SaleReport", 
              action = "GetDataConsolidated",
              type =   UrlParameter.Optional});

删除上述路线,只需更改如下操作方法

public ActionResult GetDataConsolidated(string id)

{
  return Content("Report Type = " + id);
}

这将工作,谢谢。

于 2013-02-16T19:54:18.760 回答