私のホームコントローラでは、IDパラメータを持たないすべてのアクションに対して、1つのアクションを除くすべてのアクションにIDパラメータがありません。コントローラには表示されません。私はそれを通過した場合に最初のindexアクションルートをOnlyCourseルートを置く場合は1つのアクションのURLにアクションが表示されないMVCルーティングですが、同じコントローラの別のアクションのURLにのみ表示されるIDはありますか?
routes.MapRoute(
"OnlyCourse",
"{courseabbrev}",
defaults: new { controller = "Home", action = "course", courseabbrev = UrlParameter.Optional }
);
routes.MapRoute(
"OnlyAction",
"{action}",
defaults: new { controller = "Home", action = "Index"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{courseabbrev}",
defaults: new { controller = "Home", action = "Index", courseabbrev = UrlParameter.Optional }
);
:1つのアクションのために私は、例えばURLに表示するコントローラやアクション、そのアクションのための唯一のIDパラメータ、どちらを希望しますOnlyCourseルートが見つからない場合は、まずOnlyActionルートを配置します。これらのルートを特定のアクションに個別に対応させるにはどうすればよいですか?
編集 -
したがって、たとえばのみコース(コースアクション)のためのURLは次のようになります。
http://www.sitename.come/courseabbrev
、他のアクションのためのURLが
http://www.sitename.com/action
だろう私は以下を試しました:
routes.MapRoute(
"OnlyCourse",
"{courseabbrev}",
defaults: new { controller = "Home", action = "course"},
constraints: new { action = "course" }
);
routes.MapRoute(
"OnlyAction",
"{action}",
defaults: new { controller = "Home" }
);
これはインデックスアクションのトリックですが、それ以外のアクションは引き続きOnlyCourseルートを使用します。私は制約を追加しようとしましたが、そうしたルートではインデックスから離れたすべてのアクションを考慮しているので、あまり効果がないようです。このような
なりますルートは
/courseabbrev
その後、になりたい場合は、あなたがしようとしているからOnlyCourseとOnlyAction両方のURLを追加することができますアクセス – Usman
こんにちは、私は質問のURLといくつかの他の所見を加えました。乾杯。 – Rob
idがない場合でもデフォルトルートだけがあなたのために処理する必要はありません – Usman