在保留原始Uri /路由值的同时创建ActionLink

时间:2011-01-10 07:37:43

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

我有一个带有默认索引操作的控制器,以及每个渲染自己视图的许多其他操作。

当一个动作方法调用另一个动作时,浏览器中的Uri就像是

http://localhost/Home/Events/20100120/Sydney

我如何在我的一个模板中创建一个动作链接,例如,仍然保留其他路线值? http://localhost/Home/Events/20100120/Sydney/10PM

如果我这样做,我会丢失Uri中的所有其他路线值。

<%= Html.ActionLink("View 10PM times", "Events", "Home", new Dictionary<string, object>() { {"time", "10PM"} })%>

2 个答案:

答案 0 :(得分:0)

自动保留路线数据。假设您有以下路线:

routes.MapRoute(
    "MyRoute",
    "foo/{token1}/{token2}/{action}",
    new { controller = "Home", action = "Action1", token1 = "", token2 = "" }
);

现在您请求/foo/t1/t2/Action1并在视图中写下指向Action2的链接:

<%= Html.ActionLink("Action2", "Action2")%>

将生成以下网址:/foo/t1/t2/Action2。保留路线值。

答案 1 :(得分:0)

您可以像这样使用Html.RouteLink():

<%
    var routeData = new RouteValueDictionary(this.ViewContext.RouteData.Values);
    routeData.Add("time", "10PM");
%>
<%=Html.RouteLink("View 10PM times", routeData) %>