我已经设置了一个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。

有什么想法吗?

有帮助吗?

解决方案

我认为如果参数名称是 id 而不是 param ,那么链接将只使用默认路由。如果要在那里提供其他参数,则必须创建不同的路径。

其他提示

尝试添加:

routes.MapRoute(
                    "Default",                                                                                              // Route name
                    "{controller}/{action}/{param}",                                                   // URL with parameters
                    new { controller = "Home", action = "Index", param = "" }  // Parameter defaults
            );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top