Выглядит как строка запроса, но не будет действовать как строка запроса - PullRequest
1 голос
/ 11 ноября 2011

Я работаю с VB в asp.net,

Основная проблема в том, что я хочу связать элементы в строке, точно так же, как request.QueryString() сделает с элементами в строке запроса на веб-странице.

Однако вместо функции, которая просматривает текущую строку запроса веб-страницы, я хочу, чтобы она смотрела на строку (в точном виде строки запроса), хранящуюся в виде переменной.

Так что, если я определю строку, такую ​​как:

Dim LooksLikeAQueryString As String = "?category1=answer1&category2=answer2"

Мне нужна функция, которая, если я ввожу LooksLikeAQueryString и "category1", выводит "answer1" и т. Д.

Есть ли что-нибудь, что уже может сделать это, или я должен построить свою собственную функцию? Если я должен построить свой собственный, какие-нибудь советы?

Я должен добавить, что в этом случае я не смогу добавить строку в URL, а затем запустить request.QueryString.

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Вы можете использовать метод HttpUtility.ParseQueryString - Ссылка MSDN

1 голос
/ 11 ноября 2011

ParseQueryString сделает это за вас - что-то вроде этого:

Private Function QueryStringValue(queryString As String, key As String) As String
    Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(queryString)
    For Each s As String In qscoll.AllKeys
        If s = key Then Return qscoll(s)
    Next
    Return Nothing
End Function

Использование:

    Dim LooksLikeAQueryString As String = "?category1=answer1&category2=answer2"
    Response.Write(QueryStringValue(LooksLikeAQueryString, "category2"))
0 голосов
/ 11 ноября 2011

Если вам не нужна зависимость System.Web от макушки

public string GetValue(string fakeQueryString,string key)
{
    return fakeQueryString.Replace("?",String.Empty).Split('&')
        .FirstOrDefault(item=>item.Split('=')[0] == key);
}
...