我已经建立了一个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链接到控制器/ action/params时,如下所示:
<%= 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.
有任何想法吗?
尝试添加:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{param}", // URL with parameters new { controller = "Home", action = "Index", param = "" } // Parameter defaults );