【问题标题】:url building in C#在 C# 中构建 url
【发布时间】:2010-10-13 04:43:23
【问题描述】:

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

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

有更好的首选方法吗?

【问题讨论】:

    标签: c# url


    【解决方案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 库具有与我的非常相似的内置函数。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我认为这是一个很好的方法,如果它总是知道你有什么参数,如果当时不知道你可以总是保留一个 List> ,键是名称,值是值,然后使用类似的 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);
        }
        

        注意:代码未经测试,也未编译,因此可能无法完全按原样工作。

        【讨论】:

        • 这就是我喜欢的方式。您也可以将其包装在接受 Dictionary 或更好的 . 的函数中
        • 键和值在连接之前需要进行 URL 参数编码。
        猜你喜欢
        • 2011-01-14
        • 2021-04-11
        • 2017-01-22
        • 2010-10-24
        • 2014-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多