推薦:解讀asp.net常用正則表達式一、字段 表達式 格式示例 說明 數字^/D?(/d{3})/D?/D?(/d{3})/D?(/d{4})$(425)-555-0123425-555-01234255550123驗證美國電話號碼。 名稱[a-zA-Z’`-/s]{1,40}JohnDoeO’Dell驗證名稱。最多允許使用40個大寫字母和小寫字母,以及一些在名稱中常用的特殊字符
最近在asp.net編程中發現一個問題,如果用URL從一個頁面傳遞字符串到另一個頁面,會出現傳遞的字符串比如是“DK51+700中繼站”;可是另一個頁面接收到字符串卻是:“DK51 700中繼口”;加號變成了空格,“站”不能解析出來,變成了不能識別的符號“口”的情況。
經網上查詢發現原因主要是,URL中有些字符被轉義,象空格被編碼成加號,于是傳的參數明明是加號,獲取的值卻成了空格。如果按照網上的建議,應該對要傳遞的參數進行編碼處理。于是,我對傳遞的參數進行了處理,但是又衍生了一堆問題出來;我當時為了節約時間,就沒有仔細研究,用了字符串中的Replace()方法在傳送前代替了這兩個字符,接收到了再代替回來。現在我來具體的展示下這個問題。
1.首先,我們先看下我的開始的問題(環境:VS2008):
1.1. 新建一個網站,在其中添加一個頁面,一個頁面是Defaul.aspx,另一個網頁Defaul2.aspx,在第一個頁面中添加一個控件:HyperLink1;
后臺代碼:
| public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中繼站"; HyperLink1.NavigateUrl = url + name; } } |
| public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string name = Request.QueryString["Name"]; Label1.Text = name; } } |
| public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中繼站"; name = name.Replace("+", "@"); name = name.Replace("站", "%"); HyperLink1.NavigateUrl = url + name; } } |
2.我當時的解決方法:用了字符串中的Replace()方法在傳送前代替了這兩個字符,接收到了再代替回來。
2.1第一個頁面的后臺代碼:
| public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中繼站"; name = name.Replace("+", "@"); name = name.Replace("站", "%"); HyperLink1.NavigateUrl = url + name; } } |
| public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string name = Request.QueryString["Name"]; name = name.Replace("@", "+"); name = name.Replace("%", "站"); Label1.Text = name; } } |
| <system.web> <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> </system.web> |
分享:.net編程中常見錯誤詳解1:command調用存儲過程的時候,如果輸出是dataset,selectcommand的command對象的connection先要指出,否則catch一輩子也是空的.. 2:存儲過程的varchar字段如果是x.x的這種格式,容易出現細微的傻錯誤,注意不要漏了[]. 3:如果ascx文件的默認服務器控件的事件不重
|
新聞熱點
疑難解答
圖片精選