5

我已经建立了一个 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)的链接,则调用正确的控制器和操作,但操作方法中定义的参数始终为空。

有任何想法吗?

4

2 回答 2

5

尝试添加:

routes.MapRoute(
                    "Default",                                                                                              // Route name
                    "{controller}/{action}/{param}",                                                   // URL with parameters
                    new { controller = "Home", action = "Index", param = "" }  // Parameter defaults
            );
于 2009-03-03T19:40:02.657 回答
4

我认为如果参数名称id而不是param. 如果您想在那里提供一些其他参数,则必须创建不同的路线。

于 2009-03-03T19:41:16.240 回答