lko*_*lko 16 c# asp.net-mvc dictionary webforms
有没有办法将代码中的Dictionary转换为url参数字符串?
例如
// An example list of parameters
Dictionary<string, object> parameters ...;
foreach (Item in List)
{
parameters.Add(Item.Name, Item.Value);
}
string url = "http://www.somesite.com?" + parameters.XX.ToString();
Run Code Online (Sandbox Code Playgroud)
在MVC HtmlHelpers内部,您可以使用UrlHelper(或控制器中的Url)生成URL,但在Web窗体代码隐藏中,此HtmlHelper不可用.
string url = UrlHelper.GenerateUrl("Default", "Action", "Controller",
new RouteValueDictionary(parameters), htmlHelper.RouteCollection ,
htmlHelper.ViewContext.RequestContext, true);
Run Code Online (Sandbox Code Playgroud)
如果没有MVC助手,如何在C#Web窗体代码隐藏(在MVC/Web窗体应用程序中)中完成?
Mik*_*oud 47
一种方法是:
var url = HttpUtility.UrlEncode(
string.Format("http://www.yoursite.com?{0}",
string.Join("&",
parameters.Select(kvp =>
string.Format("{0}={1}", kvp.Key, kvp.Value)))));
Run Code Online (Sandbox Code Playgroud)
你可以摆脱UrlEncode它,如果你不需要它,我只是为了完整性而添加它.
Shi*_*mmy 15
我并不是说这个选项更好(我个人认为不是),但我在这里只是想说它存在。
班上QueryBuilder:
var queryStringDictionary = new Dictionary<string, string>
{
{ "username", "foo" },
{ "password", "bar" }
};
var queryBuilder = new QueryBuilder(queryStringDictionary);
queryBuilder.Add("type", "user");
//?username=foo&password=bar&type=user
QueryString result = queryBuilder.ToQueryString();
Run Code Online (Sandbox Code Playgroud)
小智 13
您可以使用 Microsoft.AspNetCore.WebUtilities 中的 QueryHelpers:
string url = QueryHelpers.AddQueryString("https://me.com/xxx.js", dictionary);
Run Code Online (Sandbox Code Playgroud)
Juh*_*gas 10
或许创建一个静态助手类:
public static string QueryString(IDictionary<string, object> dict)
{
var list = new List<string>();
foreach(var item in dict)
{
list.Add(item.Key + "=" + item.Value);
}
return string.Join("&", list);
}
Run Code Online (Sandbox Code Playgroud)
最短的方式:
string s = string.Join("&", dd.Select((x) => x.Key + "=" + x.Value.ToString()));
Run Code Online (Sandbox Code Playgroud)
但更短并不意味着更高的效率.更好的使用StringBuilder和Append方法:
first = true;
foreach(var item in dd)
{
if (first)
first = false;
else
sb.Append('&');
sb.Append(item.Key);
sb.Append('=');
sb.Append(item.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28137 次 |
| 最近记录: |