国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

怎樣解決asp.net URL傳值出現錯誤的問題_.Net教程

2024-07-10 12:52:04
字體:
來源:轉載
供稿:網友

推薦:解讀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;
  }
}

  1.2. 在第二個頁面中添加一個Label控件Label1;
  后臺代碼:
public partial class Default2 : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    string name = Request.QueryString["Name"];
    Label1.Text = name;
  }
}

      1.3. 結果顯示:“DK51 700中繼口”。
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;
  }
}

       2.2.第二個頁面中,后臺代碼:
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;
  }
}

   2.3.結果是:“DK51+700中繼站”。正確!
  后來我在網上找到這個這樣的設置,在Web.config中設置:
<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文件的默認服務器控件的事件不重

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万安县| 阿尔山市| 长春市| 崇州市| 丹棱县| 南康市| 横峰县| 前郭尔| 浦城县| 鄂尔多斯市| 积石山| 阿坝| 灵山县| 安丘市| 肃南| 泗水县| 江华| 稻城县| 南阳市| 辽中县| 巩留县| 聊城市| 安乡县| 托里县| 邓州市| 潜山县| 永善县| 博白县| 都昌县| 尚志市| 高青县| 东阿县| 乌兰县| 大足县| 衡东县| 迁安市| 克东县| 肇东市| 朝阳市| 武邑县| 新昌县|