C# 如何在HTML actionlink中动态创建路由
我试图将路由值发送到一个方法,但我似乎无法解决这个问题。这是我的密码C# 如何在HTML actionlink中动态创建路由,c#,asp.net-mvc,url,url-routing,C#,Asp.net Mvc,Url,Url Routing,我试图将路由值发送到一个方法,但我似乎无法解决这个问题。这是我的密码 <% string s = "cool"; object d = new { s = "1" }; %> <%= Html.ActionLink("Home", "Index", d, "ql")%> url应该是这样的 http://localhost:49450/?s=1 http://localhost:49450/?cool=1 我遗漏了什么,因为在“new
<% string s = "cool";
object d = new { s = "1" };
%>
<%= Html.ActionLink("Home", "Index", d, "ql")%>
url应该是这样的
http://localhost:49450/?s=1
http://localhost:49450/?cool=1
我遗漏了什么,因为在“new{…}”表达式的上下文中,“s”与第一次出现的变量不对应-它定义了创建的匿名类的成员的名称 当你说: 新{S=123} 实际上,您正在生成一个匿名类(您永远看不到该类的名称)。类的每个成员的类型由您为其指定的内容隐式确定。在上面的示例中,生成了一个类似这样的类
class AnonymousClass_S483Ks4 {
public int S {get;set;}
}
有两种方法可以满足您的需求:
1) 你必须说:
new { cool = 123 }
(二)
现在我假设您希望名称是动态的,因此需要使用RouteValueDictionary,它允许您将键值对放入
// RouteValueDictionary is IDictionary<string, object>
var dictionary = new RouteValueDictionary();
string s = "cool";
dictionary.Add(s, 123);
htmlHelper.ActionLink("Home", "Index", dictionary);
//RouteValueDictionary是IDictionary
var dictionary=新的RouteValueDictionary();
字符串s=“酷”;
增补(第123条);
htmlHelper.ActionLink(“主页”、“索引”、字典);
如您所见,这里可以使用变量“s”来表示您想要的任何内容。这将为您提供所需的URL 好的..我尝试了代码,但它根据您的原始代码生成了一个类似@luke101的链接您可能正在执行“object dictionary=new RouteValueDictionary()”您需要确保传递给ActionLink()的对象是RouteValueDictionaryoh类型是的..我逐字复制了代码并进行了尝试。但它给出了上面的url,我运行了它(我以前没有)并得到了“”,这就是你要找的。我确实遇到过您以前遇到的问题,它是由调用错误的重载(传入“对象”)引起的。检查编译器正在使用的重载,并确保使用的是带有RouteValueDictionary的重载。我正在使用MVC2,但我认为这个签名没有改变。哦。。。M$rulezz。。。他们使用
对象htmlAttributes
进行重载,直到我手动将其转换为(IDictionary)null
,现在它可以工作了