次のルートが定義されています。
context.MapRoute("routeCreate", "{aval}/anArea/aController/Create/{val.Id}", new { action = "Create", controller = "aController" });
次のキャッチオールルートが定義されるまで、どの機能が機能しますか:
context.MapRoute("catchallCreate", "{aval}/anArea/{controller}/Create/", new { action = "Create"});
ルートは次によって呼び出されます。
RedirectToAction("Create", new {val.Id});
結果の URL は /1 ではなく ?Id=1 になり、「val」を取得していないようです。もう一部。
そのパラメーター構文で制約を作成できないため、{val.Id} の使用に問題がある可能性があると考えています。
アップデート:
次のルートが定義されているので、まだ何かが足りないのかもしれません
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.Add(
new Route(
"{aval}/anArea/aController/Create/{val.Id}",
new RouteValueDictionary()
{
{ "action", "Create" },
{ "controller", "aController" },
{ "val.Id", UrlParameter.Optional }
},
null,
new RouteValueDictionary() { { "area", "anArea" } },
new MvcRouteHandler()));
// catchall
context.MapRoute("Create", "{aVal}/anArea/{controller}/Create", new { action = "Create" });
Optional を削除しても機能しません。最初のルートは、キャッチオールが削除された場合にのみ機能します。