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

しかし、問題は type の値が常に null であることです。私は何を間違っていますか?

4

2 に答える 2

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 に答える
0

それはおそらく.MapRoute(...)呼び出しの順序です。

より具体的であるため、「SaleReport」.MapRoute(...)呼び出しを「Default」呼び出しの前に置きます。{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 に答える