【问题标题】:Request.QueryString[] that contains '+'Request.QueryString[] 包含 '+'
【发布时间】:2010-07-31 12:22:02
【问题描述】:

我有一个页面,我希望将查询字符串中的 ID 传递给另一个页面

例如

Response.Redirect("~/Account/Login.aspx?CertificateID="+ CertificateTextBox.Text);

但 CertificateTextBox 中的值是 Encoding.UTF8 格式

所以它可以包含像“ZnbiS69F2g22OeupHw+Xlg==”这样的字符

接收页面获取QueryString时

CertificateTextBox.Text = Request.QueryString["CertificateID"];

“+”和可能的其他查询字符串字符,如“?”被剥光了!!

所以我最终得到了

Request.QueryString["CertificateID"];

返回

"ZnbiS69F2g22OeupHw Xlg=="

去掉“+”!

有没有办法对这些字符进行编码,这样它们就不会被 QuesryString() 还是我必须使用会话变量??

【问题讨论】:

    标签: asp.net encoding query-string


    【解决方案1】:

    您需要对其进行编码以进行 URL 格式设置,例如使用 HttpServerUtility.UrlEncode(),例如:

    var encodedCertID = Server.UrlEncode(CertificateTextBox.Text);
    Response.Redirect("~/Account/Login.aspx?CertificateID="+ encodedCertID);
    

    【讨论】:

    • 我尝试了几种类型的编码,但如果“+”在查询字符串中的任何位置,它就会被剥离!
    • @user319675 - 当你 decode 时会发生这种情况你确定你没有错误地运行UrlDecode() 吗?当你编码你的字符串应该是这样的:"ZnbiS69F2g22OeupHw%2bXlg==".
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    相关资源
    最近更新 更多