создание URL - PullRequest
       24

создание URL

4 голосов
/ 13 марта 2009

Мне нужно создать URL со строкой запроса в C #. Каков наилучший подход к этому? Прямо сейчас я использую что-то вроде

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

Есть ли лучший, предпочтительный подход?

Ответы [ 3 ]

5 голосов
/ 13 марта 2009

Я думаю, что вы должны использовать Server.UrlEncode для каждого из аргументов, чтобы вы не отправляли плохие символы в URL.

5 голосов
/ 13 марта 2009

Я думаю, что это хороший метод, если он всегда знает, какие параметры у вас есть, если он неизвестен в то время, когда вы всегда можете сохранить 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);
}

примечание: код не проверен и не скомпилирован, поэтому он может работать не так, как есть.

1 голос
/ 15 апреля 2009

Я написал аккуратную маленькую библиотеку с открытым исходным кодом именно для таких вещей. Проверьте WebBuddy , и в частности UriBuddy . Двоичные файлы предназначены для Silverlight, но вы можете легко просмотреть источник и скопировать все, что вам нужно.

Вот как бы вы назвали 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 имеет встроенные функции, которые очень похожи на мои.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...