从编码中停止Response.Redirect

时间:2011-06-28 19:16:08

标签: .net asp.net vb.net

此response.redirect之后生成的URL字符串让我们头疼。它正在用url percent编码字符替换字符并添加额外的文件目录。

Response.Redirect("TestingReport.aspx?id=" + Request.QueryString("id") + "&Test_Type_ID=" + Request.QueryString("Test_Type_ID") + "&TType=" + Request.QueryString("TType"))

https://subdomain.domain.com/User%20Portal/Testing/%2fUser%2520Portal%2fTesting%2fTestingReport.aspx%3fid%3d8444%26Test_Type_ID%3d2%26TType%3dCore%20Mandatory%202

为什么会改变?和=百分比代码?我不明白为什么它会两次附加用户门户/测试。

由于

5 个答案:

答案 0 :(得分:2)

它被称为URLEncoding。结帐this online utility以解码您拥有的字符串。 在.NET中,您可以使用System.Web.HttpUtility进行编码/解码。

答案 1 :(得分:0)

确保您的网址中没有空白区域。

答案 2 :(得分:0)

整个URL会被URL格式化,这可能是因为您不是对您在字符串中放置的值进行URL编码。 URL正确编码值,它应该工作:

Response.Redirect(
  "TestingReport.aspx?id=" + Server.UrlEncode(Request.QueryString("id")) +
  "&Test_Type_ID=" + Server.UrlEncode(Request.QueryString("Test_Type_ID")) +
  "&TType=" + Server.UrlEncode(Request.QueryString("TType"))
)

答案 3 :(得分:0)

可能希望与Redirect方法行分开构建查询字符串,对这些值进行URL编码,然后对传递给Response.Redirect的URL进行HTML编码

MSDN网站上显示的示例。我怀疑你的连接操作在某种程度上导致框架对整个事物进行URL编码,而不仅仅是值。

<% 
  

dim qs

qs = Server.URLEncode(Request.Querystring) 

Response.Redirect "newpage.asp?" + Server.HTMLEncode(qs) 
%>

http://msdn.microsoft.com/en-us/library/ms524309.aspx

答案 4 :(得分:0)

结帐this post。基本上.Net正在尝试为您清理URL并弄乱。解决方案是手动编码。