我正在尝试使用以下映射路由设置自定义路由
编辑:我的完整路线配置
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”的空条目
奇怪的是,如果我将 Add 操作的参数更改为“Id”,那么以下 URL 将起作用 Result/Add/1。我很困惑,是否有一些默认路由覆盖了我的自定义路由?为什么将参数更改为“Id”有效?
编辑
只是为了测试,我在动作中添加了另一个参数
public ActionResult Add(int? fixtureId, int? testId)
然后我相应地编辑了路由,现在它可以工作了,所以我认为这是默认路由的问题。