2010-03-05 3 views
0

Я следующий метод:ASP.Net и NameValueCollection

public object[] GetEventsByUser(DateTime start, DateTime end, string fullUrl) 

Значение fullUrl является:

http://localhost:50435/page/view.aspx?si=00&us=admin&ut=smt&

Когда я делаю:

NameValueCollection qscoll = HttpUtility.ParseQueryString(fullUrl); 

Я получаю :

{HTTP% 3A% 2F% 2flocalhost% 3a50435% 2fpage% 2fview.aspx% 3fsi = 00 & нас = админ & ут = смт &}

Но мне нужно, чтобы получить параметры в QueryString этой страницы, и с этим значением я не могу получить значение «si», потому что знак вопроса, который запускает запрос, закодирован. Так что я подумал: «Хм ... Я должен попытаться сделать HttpUtility.HtmlEncode()»

Однако метод HtmlEncode возвращает силу: Однако второй параметр этого метода отправляет значение в TextWriter. Но это не NameValueCollection.

Возможно, решение прост ... но я не вижу его.

ответ

1

Вы должны урезать его вниз только строки запроса перед разбором, как это:

if (fullUrl.Contains("?")) { 
    fullUrl = fullUrl.Substring(fullUrl.IndexOf("?") + 1); 
} 
NameValueCollection qscoll = HttpUtility.ParseQueryString(fullUrl); 
1

Вы можете попробовать:

var si = Request["si"]; 
var user = Request["us"]; 
//etc. 
+1

Вы имеете в виду 'Request.QueryString [ "си"]'. –

+0

Я имел в виду: Request ["xy"], я изменил это. – Robert