在C#ASP.NET中获取完整的查询字符串

时间:2009-12-10 09:26:17

标签: c# asp.net url

作为一名PHP程序员,我习惯使用$ _GET来检索HTTP查询字符串...如果我需要整个字符串,那么就有很多方法可以做到。

然而,在ASP中,我似乎无法获得查询。

以下是news.aspx的代码(嵌入在某些HTML中):

<%                             
    string URL = "http://www.example.com/rendernews.php?"+Request.Querystring;
    System.Net.WebClient wc = new System.Net.WebClient();
    string data = wc.DownloadString(URL);
    Response.Output.Write(data);
%>

我从远程服务器获取PHP脚本的输出,这在没有Request.Querystring的情况下完美地工作。

问题是我正在尝试在第一行获取完整的查询字符串:Request.Querystring。我收到错误“对象引用没有设置为对象的实例”这基本上意味着Request.Querystring不存在。

知道问题在这里吗?如何在调用index.aspx时获取该查询字符串,如http://test.com/news.aspx?id=2我的脚本提取http://www.example.com/rendernews.php?id=2

6 个答案:

答案 0 :(得分:174)

如果您希望将原始查询字符串作为字符串,请尝试Request.Url.Query

答案 1 :(得分:15)

这应该适合你。

将此代码写入页面的Page_Load事件中。

string ID = Request.QueryString["id"].ToString();
Response.Redirect("http://www.example.com/rendernews.php?id=" + ID);

答案 2 :(得分:5)

Request.QueryString返回表示查询字符串的键/值对的集合。不是字符串。不要认为这会导致对象引用错误。你得到这个的原因是因为正如Mauro在评论中指出的那样。它是QueryString而不是Querystring。

尝试:

Request.QueryString.ToString();

<%                                 
    string URL = Request.Url.AbsoluteUri 
    System.Net.WebClient wc = new System.Net.WebClient();
    string data = wc.DownloadString(URL);
    Response.Output.Write(data);
%>

与您的代码相同,但Request.Url.AbsoluteUri将返回完整路径,包括查询字符串。

答案 3 :(得分:1)

只需使用Request.QueryString.ToString()即可获得完整的查询字符串,如下所示:

string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString();

答案 4 :(得分:0)

我测试了你的例子,虽然Request.QueryString不能转换为字符串既不是隐式也不是显式仍然.ToString()方法返回正确的结果。

当使用“+”运算符与字符串连接时,如同在示例中一样,它也将返回正确的结果(因为它的行为就像调用了.ToString())。

因此,您的代码没有任何问题,我建议您的问题是因为代码中的拼写错误而不是“QueryString”。

这对您的错误消息更有意义,因为如果问题是QueryString是一个集合而不是字符串,则必须提供另一条错误消息。

答案 5 :(得分:-1)

刚才,我遇到了同样的问题。我以下列方式解决它。

Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);

参考this