我使用默认路由,因此不需要指定控制器。
routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
有了这个,我可以创建类似 myapp.com/Customers 而不是 myapp.com/Home/Customers 的 URL
当我在本地测试时,一切都很好。当我上传实时版本时,使用 Html.ActionLink 生成的任何链接都是空的。我知道我正确使用了 Html.ActionLink,因为它在本地运行良好:
// Title Action Controller
<%: Html.ActionLink("Manage My Settings", "Settings", "Home") %>
我已经删除了除默认值之外的所有路由,尝试指定带有和不带有控制器的 ActionLink 等。我什至尝试恢复为在路由中包含控制器,例如:
"{controller}/{action}/{id}"
现场没有任何效果。一切都在本地进行。有点发疯了。
UPDATE:
好吧,有了一个奇怪的发现。实际上,我在 id 之后还有另一个可选的 UrlParameter,称为 page。我愚蠢地没有将其包含在示例中,因为我认为这没有什么区别。如果我把它拿出来,一切似乎都会奏效。
所以,实际上,这是有效的:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
and this works!
routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
but this does Not work
routes.MapRoute(
"Default",
"{action}/{id}/{page}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, page = UrlParameter.Optional }
);
为什么不?