【发布时间】:2017-05-23 20:01:28
【问题描述】:
我看到 this answer 描述了 ASP.NET 对无键(非无价值)参数的支持,例如 http://some.url?param1&param2,并确认它们可以在 Request.QueryString 上查看,例如:
var values = this.Request.QueryString.GetValues(null);
values.Any(o => o == "param1");
这很好,但现在我想生成这样的 url。我的第一个直觉是使用Url.Action 的RouteValueDictionary: routeValues 参数,以null 作为键:
@{
var dict = new RouteValueDictionary();
dict.Add(null, "param1");
dict.Add(null, "param2");
}
<a href="@Url.Action("ActionName", dict)">Very link, amaze</a>
但显然 C# forbids nulls as dictionary keys 因为原因。
我也尝试将空字符串作为键,但它会产生一个查询字符串,例如:?=param1,=param2,其中包含我想要的另外 2 个等号。
当然,我可以对我的 URL 进行字符串操作,并将 &param1 部分添加到查询字符串中,但我希望有一个简洁的解决方案。
【问题讨论】:
-
@2316116 您能否详细说明如何“使用路由”来创建我描述的 URL?
-
路由通常使用 / 作为键和值之间的分隔符,并且 url 看起来像 server/url/param1/param2 - 所以如果使用 ?并且 & 不是必须使用的路由。
-
@2316116 我明白你的意思了。将是一个不错的选择,谢谢你的建议。
标签: c# asp.net query-string