mvc Web アプリケーションに新しいルートを追加していますが、期待どおりに動作しません。リストのどこに行くべきか、そしておそらくどのデフォルトや制約を(RouteConfig.csで)定義する必要があるかを誰かが理解するのを手伝ってくれることを望んでいました。
目的のルートは次のようになります。
/controller/id/slug/action
例: mydomain.com/products/10/product-name/reviews
このルートを次のように定義しようとしましたが、リストされている 1 番目、2 番目、3 番目のルートとして試しました。
routes.MapRoute(
name: "AlternateRoute",
url: "{controller}/{id}/{slug}/{action}",
defaults: null,
constraints: new { id = @"\d+", slug = @"[\w\-\d+]*" }
);
/products/10/product-name
上記のルートを追加して、以前は /products/create のようなものだった URL が /products/10/product-name/create のように見える (ただし、そのページのみ) のようなページを参照した後、何が起こっていますか。
私が持っている唯一の他のルートはこれらの3つです(私のrouteConfigファイルで定義されています):
/コントローラー/ID/スラッグ
routes.MapRoute(
name: "DefaultSlugRoute",
url: "{controller}/{id}/{slug}",
defaults: new { action = "Details", slug = "" },
constraints: new { id = @"\d+", slug = @"[\w\-\d+]*" }
);
/コントローラー/アクション/年/月
routes.MapRoute(
name: "MonthlyArchiveRoute",
url: "{controller}/{action}/{year}/{month}",
defaults: new { controller = "Blog", action = "Archives", year = UrlParameter.Optional, month = UrlParameter.Optional },
constraints: new { year = @"\d{4}", month = @"\d{2}" }
);
/controller/action/id (新しい mvc プロジェクトに含まれる標準のもの)
routes.MapRoute(
name: "DefaultRoute",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);