ASP.Net和NameValueCollection

时间:2010-03-05 21:52:55

标签: c# 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安培; US =管理员&安培; UT = SMT&安培;}

但我需要获取此页面的QueryString中的参数,并且使用此值,我无法获取“si”值,因为启动查询字符串的问号已被编码。 所以我想:“哼......我应该尝试做HttpUtility.HtmlEncode()”

但是HtmlEncode方法返回void:但是此方法的第二个参数将值发送给TextWriter。但它不是NameValueCollection。

也许解决方案很简单......但是我看不到它。

2 个答案:

答案 0 :(得分:1)

在解析之前,您需要将其修剪为查询字符串,如下所示:

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

答案 1 :(得分:1)

你可以尝试:

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