次のマップされたルートでカスタム ルーティングを設定しようとしています
編集:私の完全なルート設定
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
#region FixtureAdmin
routes.MapRoute(
name: "FixtureEdit",
url: "{controller}/{action}/{id}",
defaults: new { controller = "FixtureAdmin", action = "Edit", id = UrlParameter.Optional }
);
#endregion
#region Results
routes.MapRoute(
name: "ResultAdd",
url: "{controller}/{action}/{fixtureId}",
defaults: new { controller = "Result", action = "Add", fixtureId = UrlParameter.Optional }
);
#endregion
そして私のコントローラーコード
public ActionResult Add(int fixtureId)
{
// return model to view etc..
}
パラメータをオプションとして指定したにもかかわらず、これは例外になります。
パラメーター ディクショナリに、パラメーター 'fixtureId' の null エントリが含まれています
奇妙なことに、Add アクションのパラメーターを単に 'Id' に変更すると、次の URL が Result/Add/1 として機能します。混乱しています。カスタム ルーティングをオーバーライドしているデフォルト ルーティングはありますか? パラメータを単に 'Id' に変更すると機能するのはなぜですか?
編集
テストのために、アクションに別のパラメーターを追加しました
public ActionResult Add(int? fixtureId, int? testId)
それに応じてルートを編集したところ、機能するようになったので、デフォルトのルーティングに問題があると思います。