2010-07-31 99 views
2

我有希望在查询字符串传递一个ID到另一页包含 '+'

例如

的Response.Redirect(“〜/帐户/登录页面的Request.QueryString []。 aspx?CertificateID =“+ CertificateTextBox.Text);

但CertificateTextBox值在Encoding.UTF8格式

因此它可以包含字符,如“ZnbiS69F2g22OeupHw + XLG ==”

当接收页面获取查询字符串

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

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

所以我最终

Request.QueryString["CertificateID"]; 

返回

“ZnbiS69F2g22OeupHw XLG ==”

“+” strinpped的!

有没有一种方法来编码这些字符,使他们不被条纹由QuesryString() 或我必须使用会话变量?

回答

4

你需要对它进行编码的URL中使用HttpServerUtility.UrlEncode()例如格式化,例如:

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

我用尽几种类型的编码,但如果“+”是一个查询字符串的任何地方被剥夺! – user319675 2010-07-31 12:27:33

+0

@ user319675 - 当你解码时会发生*你确定你没有错误地运行UrlDecode()吗?当你编码你的字符串应该看起来像这样:'“ZnbiS69F2g22OeupHw%2bXlg ==”'。 – 2010-07-31 12:28:52