我試圖設置自定義的路由具有以下映射路徑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..
}
即使我已將該參數指定爲可選,但即使出現異常。
參數字典包含參數無效項「fixtureId」
奇怪的是,如果我更改添加操作的參數,只是「身份證」,那麼下面的URL將工作結果/添加/ 1。我很困惑,是否有一些默認路由覆蓋了我的自定義路由?爲什麼要將參數更改爲'Id'?
編輯
只是爲了測試,我添加了另一個參數動作
public ActionResult Add(int? fixtureId, int? testId)
我然後相應地編輯的路線,現在它的作品,所以我認爲它是與默認路由的問題。
是他們的任何其他途徑。如果你想能夠調用之前或之後該 – rajansoft1
還配置'添加'沒有指定id,'fixtureId'應該是可以爲空的''int? fixtureId'。路由上下文中的「可選」意味着它不必位於URL中,以便您可以執行像'public ActionResult Add(){/ * no parameters * /}' – Alex
只有我能想到的你使用的是不可空的int嗎? Id很可能會融入到MVC框架中,因此可能會有所不同。 – David