我已经设置了一个ASP.NET MVC项目,一切都运行良好,但我确实遇到了路由问题。我的Global.asax看起来像这样:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
所以,没有什么不同寻常的。我的问题是当我链接到带有HTML.ActionLink的控制器/动作/参数时,如下所示:
<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>
它应该生成(至少在我脑海中有意义的)一个链接,例如:http://www.localhost/SomeController/SomeAction/someParam
。
但它会生成如下链接:http://localhost/SomeController/SomeAction?param=someParam
如果我手动创建链接到预期结果的链接(SomeController / SomeAction / someParam),则调用正确的控制器和操作,但action方法中定义的参数始终为null。
有什么想法吗?
答案 0 :(得分:5)
尝试添加:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{param}", // URL with parameters
new { controller = "Home", action = "Index", param = "" } // Parameter defaults
);
答案 1 :(得分:4)
我认为如果参数名称为id
而不是param
,该链接将仅使用您期望的默认路由。如果要在那里提供其他参数,则必须创建不同的路径。