にnullエントリが含まれている私は、カスタム、以下のマッピングされたルートasp.net-MVCルーティングの問題:パラメータ辞書はパラメータ
編集してルーティングを設定しようとしています:私の完全なルートの設定
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..
}
これは、パラメータをオプションとして指定したにもかかわらず、この例外が発生しています。
パラメータ辞書は、パラメータにnullエントリが含まれている「fixtureId」
私はちょうど「ID」、その後、次のURLは、検索結果を動作するために追加のアクションのパラメータを変更する場合は奇妙なことが、あります/ Add/1。私は混乱している、私のカスタム1をオーバーライドしているいくつかのデフォルトのルーティングはありますか?パラメータを 'Id'だけに変更するのはなぜですか?ただ、テストする
編集
は、私はそれに応じてルートを編集し、今では動作しますので、私はそれがデフォルトのルーティングの問題です数えるアクション
public ActionResult Add(int? fixtureId, int? testId)
に別のパラメータを追加しました。
あなたが呼び出すことができるようにしたい場合も、この – rajansoft1
の前または後に設定され、そのいずれかの他のルートでありますidを指定せずに 'Add'を実行すると、' fixtureId'はヌル入力可能でなければなりません - 'int? fixtureId'。 "オプション"は、URLの中にある必要はないので、 'public ActionResult Add(){/ * no parameters * /}'のようなアクションを持つことができることを意味します。 – Alex
私が考えることができるものnullではないintを使用しているということですか? IdはおそらくMVCフレームワークに焼き付けられているので、おそらく動作が異なります。 – David