次のさまざまなタイプの URL パス/ルートを表現できるようにしたいプロジェクトがあります。
{controller}/{section}
{controller}/{section}/{id}
{controller}/{section}/{organization}
{controller}/{section}/{id}/{key}
{controller}/{section}/{organization}/{id}
{controller}/{section}/{organization}/{id}/{key}
次のように、 global.asaxでルート マッピングを指定しました。
routes.MapRoute(
"Section", // Route name
"{controller}/{section}", // URL with parameters
new {
controller = "Poll",
action = "Section",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute(
"SectionMember", // Route name
"{controller}/{section}/{id}", // URL with parameters
new {
controller = "Poll",
action = "SectionMember",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute(
"SectionOrganization", // Route name
"{controller}/{section}/{organization}", // URL with parameters
new {
controller = "Poll",
action = "SectionOrganization",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute(
"SectionOrganizationMember", // Route name
"{controller}/{section}/{organization}/{id}", // URL with parameters
new {
controller = "Poll",
action = "SectionOrganizationMember",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute(
"SectionMemberKey", // Route name
"{controller}/{section}/{id}/{key}", // URL with parameters
new {
controller = "Poll",
action = "SectionMemberKey",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute(
"SectionOrganizationMemberKey", // Route name
"{controller}/{section}/{organization}/{id}/{key}", // URL with parameters
new {
controller = "Poll",
action = "SectionOrganizationMemberKey",
id = UrlParameter.Optional
} // Parameter defaults
);
コントローラーに次のコードがあります。
public class PollController : Controller {
public ActionResult Section(string section) {
return View();
}
public ActionResult SectionMember(string section, int id) {
return View();
}
public ActionResult SectionOrganization(string section, string organization) {
return View();
}
public ActionResult SectionOrganizationMember(string section, string organization, int id) {
return View();
}
public ActionResult SectionMemberKey(string section, int id, string key) {
return View();
}
public ActionResult SectionOrganizationMemberKey(string section, string organization, int id, string key) {
return View();
}
}
{id} パラメーターを必要としないルートにアクセスしようとすると {id} パラメーターを探し続け、その逆も同様であるため、URL ルーティングには問題があるようです。
セットアップに深刻なオーバーラップが見られるか、それとも完全に何かが欠けていますか?
編集
私が使用する URL の例は次のとおりです。