1

リスト コントローラーを持つ Asp.Net Mvc Web サイトがあります。ルートは次のようになります。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new string[] { "MySite.Web.Controllers" }
);

かなり標準的。これで、リスト コントローラーに多数のコントローラー アクションができました。/listing/84 に移動して Index アクションに移動するか、/listing/create、/listing/edit、/listing/favorite、または /listing/others に移動して対応するアクション。私のルートのほとんどでは、これはすでに当てはまります。これは私のコントローラコードです:

public ActionResult Index(long? id)
{
    // my code that never gets hit
}

何か不足していますか?

4

2 に答える 2

3

これに特定のルートを定義し、id に制約を定義できます。

routes.MapRoute(
    "ActionLess",
    "{controller}/{id}",
    new { controller = "Home", action = "Index" },
    new { id = @"^[0-9]+$" },
    new string[] { "MySite.Web.Controllers" }
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new string[] { "MySite.Web.Controllers" }
);
于 2012-09-24T07:46:50.957 に答える
0

2つの新しいルートを作成できます

一覧表示/Create アクションをナビゲートするための Create

routes.MapRoute(
     "listingCreate", // Route name
     "listing/Create", // URL with parameters
      new { controller = "listing", action = "Create" } 
);

Id を渡すときのインデックス アクションの場合

routes.MapRoute(
     "lisingid", // Route name
     "listing/{Id}", // URL with parameters
      new { controller = "listing", action = "Index", id = UrlParameter.Optional } 
);

お役に立てば幸いです。

于 2012-09-24T07:43:03.307 に答える