MVC .NET 4 MapRoute + ActionLink或RouteLink问题

时间:2013-01-18 23:10:07

标签: asp.net-mvc actionlink maproute

好的,所以这是交易。我有一个名为“Hotel”的控制器,名为“Index”,我正在尝试生成代码,允许我以下列形式生成链接:

../Hotel?id=1

以ID作为参数传递。为此,我尝试使用MapRoute:

@Html.RouteCollection.MapRoute("Hotel", "../{controller}/{id}", new { controller = "hotel" });

与ActionLink一起使用:

@Html.ActionLink("More >>>", "", "Hotel", new { id = item.HotelId }, null)

但结果链接如下:

Hotel/Index/1

这导致了正确的位置,但在我的网站上烧毁了所有链接的视觉一致性。我也尝试过RouteLink,但没有成功。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您是否希望应用程序中的所有链接使用标准查询字符串格式作为名为“id”的参数?如果是这样,从“默认”路线中删除网址中的{id}和默认对象应该可以为你做好。

如果您想将其限制为“酒店”控制器,那么您就可以使用自定义路线。首先,确保自定义路由在默认路由定义之前,然后在控制器/操作之外的任何内容中定义它,如:

routes.MapRoute(
            "HotelRoute", // Route name
            "Hotel/{action}/", // URL with parameters
            new { controller="Hotel", action = "Index" } // Parameter defaults
        );

然后,您传入的任何参数都应作为名称/值对附加到查询字符串中。