无法在asp.net中读取查询字符串

时间:2015-01-31 05:40:15

标签: c# asp.net

这是我的网址,其中包含4个查询字符串(desc,url,img,title)。

  

http://localhost:4385/Default?desc=Home%20Page&url=http://localhost:4385/&img=http://localhost:4385/images/ribbon-img.png&title=

我读了下面的查询字符串,

 string title = Request.QueryString["desc"];
 string pageurl = Request.QueryString["url"];
 string alttext = Request.QueryString["title"];
 string imageurl = Request.QueryString["img"];

我得到的输出是:

title=Home Page&url=http://localhost:4385/&img=http://localhost:4385/images/ribbon-img.png&title="

它需要整个url到第一个querstring,这不是我预期的输出。

我期望所有查询字符串变量的值

任何人都可以帮助我

2 个答案:

答案 0 :(得分:3)

我认为网址格式不正确,因为斜杠/字符将在查询字符串中以%2F的形式发送,但未以您的网址格式进行。

更新:

Respose.Redirect("http://localhost:4385/Default?desc=Home%20Page&url="+Uri.EscapeDataString("http://localhost:4385/")+"&img="+Uri.EscapeDataString("http://localhost:4385/images/ribbon-img.png")+"&title=");

答案 1 :(得分:0)

问题是您没有使用正确的编码创建QueryString。 .NET框架有HttpUtility.ParseQueryString Method来简化编码问题。试试这段代码

//are you sure your URL doesn't have an ".aspx" extension?
var url = " http://localhost:4385/Default.aspx?";
var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
queryString["desc"] = "Home Page";
queryString["url"] = "http://localhost:4385/";
queryString["image"] = "http://localhost:4385/images/ribbon-img.png";
queryString["title"] = "";
Response.Redirect(url + queryString.ToString());

现在QueryString看起来像这样。

  

var urlWithQueryString =" http://localhost:4385/Default.aspx?desc=Home+Page&url=http%3a%2f%2flocalhost%3a4385%2f&image=http%3a%2f%2flocalhost%3a4385%2fimages%2fribbon-img.png&title="

现在可以使用您尝试过的方法进行解析

string title = Request.QueryString["desc"];
string pageurl = Request.QueryString["url"];
string alttext = Request.QueryString["title"];
string imageurl = Request.QueryString["image"]; //you have wrongly typed "img" here
相关问题