国产探花免费观看_亚洲丰满少妇自慰呻吟_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下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林甸县| 靖宇县| 黄陵县| 永春县| 凉山| 广南县| 遂宁市| 赣州市| 堆龙德庆县| 余姚市| 柯坪县| 黄石市| 金川县| 洛隆县| 江达县| 赤壁市| 星子县| 美姑县| 肇庆市| 泸州市| 策勒县| 宝兴县| 吴忠市| 裕民县| 潼关县| 海原县| 武鸣县| 高碑店市| 嫩江县| 怀宁县| 且末县| 稷山县| 尼勒克县| 建始县| 梓潼县| 张掖市| 湖南省| 永康市| 密山市| 梨树县| 昭平县|