1

ASP.NET MVC 5 でルーティングを設定するにはどうすればよいですか。達成したいこと:定義され{controller}/{id}ていない場合は、.{action}Index()id

私はこれを試しましたが、うまくいきませんでした:

// Keep default routing
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

// Add own routing in case of missing "action"
routes.MapRoute(
    name: "Controller/Id",
    url: "{controller}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
4

1 に答える 1

0

アミールのコメントを読んだ後、ルーティングが私が望んでいたほど「インテリジェント」ではないことが明らかになりました。そのため、URL パターンが 1 つのルートに一致しているが、そのようなコントローラー/メソッドが見つからない場合、次のルートに「フォールスルー」しません。ルーティング コマンドですが、例外が発生します。

そこで、Simon が提案したことを試し、カスタム ルーティングに制約を追加し、順序を逆にしたところ、現在は機能しています。ただし、添付ファイルに似た他のマッピングが必要な場合は、それらを 1 つずつ追加する必要があります。

作業コード:

routes.MapRoute(
    name: "Attachments",
    url: "attachments/{id}",
    defaults: new { controller = "Attachments", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
于 2013-09-02T20:30:12.453 に答える