如何在HTML动作链接中动态创建路径

时间:2010-02-14 06:27:53

标签: c# asp.net-mvc url url-routing

我正在尝试将路由值发送到方法但我似乎无法弄清楚这一点。这是我的代码

<%  string s = "cool";
    object d = new {  s = "1" };

         %>
<%= Html.ActionLink("Home", "Index", d, "ql")%>

以下代码生成这样的网址

http://localhost:49450/?s=1

网址应该是这样的

http://localhost:49450/?cool=1

我缺少什么

1 个答案:

答案 0 :(得分:2)

因为在'new {...}'表达式的上下文中,'s'不对应于它可能首先出现的变量 - 它定义了创建的匿名类的成员的名称。 / p>

当你说:

新{S = 123}

你实际上正在生成一个匿名的类(你永远不会看到该类的名称)。类的每个成员的类型由您分配给它的任何内容隐式确定。在上面的例子中,生成了类似这样的类

class AnonymousClass_S483Ks4 {
 public int S {get;set;}
}

有两种方法可以做你想做的事:

1)你不得不说:

new { cool = 123 } 

2) 现在我假设您希望名称是动态的,因此您需要使用RouteValueDictionary,它允许您放置键值对。

        // RouteValueDictionary is IDictionary<string, object>
        var dictionary = new RouteValueDictionary();  
        string s = "cool";
        dictionary.Add(s, 123);
        htmlHelper.ActionLink("Home", "Index", dictionary);

正如您所看到的,在这里您可以使用变量's'来表示您想要的任何内容。这应该为您提供所需的URL。