网址建设

时间:2009-03-13 15:31:13

标签: c# url

我需要在C#中使用查询字符串构建一个URL。这样做的最佳方法是什么?现在,我正在使用类似的东西,

string url = String.Format("foo.aspx?{0}={1}&{2}={3}", "a", 123, "b", 456);

有更好的首选方法吗?

3 个答案:

答案 0 :(得分:5)

我认为这是一个很好的方法,如果它总是知道你有什么参数,如果在你总是保持List< KeyValuePair< string,string>>时这是未知的。使用键作为名称和值作为值,然后使用类似

的foreach循环构建查询字符串
StringBuilder sb = new StringBuilder();
foreach(KeyValuePair<string,string> q in theList)
{
 // build the query string here.
    sb.Append(string.format("{0}={1}&", q.Key, q.Value);
}

注意:代码未经过测试且尚未编译,因此可能无法完全正常工作。

答案 1 :(得分:5)

我认为您应该在每个参数上使用Server.UrlEncode,这样您就不会在URL中发送任何错误字符。

答案 2 :(得分:1)

我为这些事情编写了一个简洁的小型开源库。查看WebBuddy,特别是UriBuddy。二进制文件适用于Silverlight,但您可以轻松地browse the source并撕掉您需要的任何内容。

以下是你打电话给UriBuddy的方式:

// Take a base url
Uri sample = new Uri("http://www.nytimes.com");

// some highly useful parameters
Dictionary<String, String> query = new Dictionary<string, string>
{
    {"param1","nice"},
    {"param2","code man"}

};


// create a new url using a chained style of coding
Uri newSample = sample
    .AppendPath("/pages/world")
    .AppendQueryValues(query);
顺便说一下,我从来没有在Silverlight之外做过这种事情。我很确定“真正的”.NET库具有与我的非常相似的内置函数。