我在GridView中添加了一個HyperLinkFiled字段用來顯示詳細信息。將DataNavigateUrlFileds 屬性設為 UserName (字段) DataNavigateUrlFormatString 屬性設為 Detail.aspx?un={0} 但是我在Detail.aspx
頁獲取值的時候出現啦問題。因為我的UserName(字段)值是中文的。如:當Username="王二小" 時,地址欄顯示的是 http://localhost/Detail.aspx?un=王二小
而在Detail.aspx頁用Response.Write(Request.QuerString("un").Tostring())輸出的值卻是王二。
   各位如果傳的變量值是中文的話是不是要用HtmlEncode 呀?要用HtmlEncode我這個DataNavigateUrlFormatString 該怎么寫呀?如果我要實現類視與下面的這中加密傳送方式我的DataNavigataUrlFormatString 又
該怎么寫?加密:
Response.Redirect("DetailInfo.aspx?id=" + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("變量值")).Replace("+","%2B")); 解密: 
string ID = System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["id"].ToString().Replace("%2B","+"))); 懇請大家幫幫忙! 謝謝!

解决方案 »

  1.   

    各位如果傳的變量值是中文的話是不是要用HtmlEncode 呀?要用HtmlEncode我這個DataNavigateUrlFormatString 該怎么寫呀?
    ========
    1.
    GridView 的 BoundField 内置是支持 HtmlEncode,
    但,中文得用 Server.UrlEncode/Server.UrlDecode2.
    方式a
    需要在 RowDataBound 中处理3。
    方式b
    选择使用模板列<asp:templatefield>
    <itemtemplate>
    <asp:hyperlink id=lnk NavigateUrl='<%# "Detail.aspx?un=" + Server.UrlEncode(Eval("字段1").ToString()) %>' ....
    // 取
    string str = Server.UrlDecode(Request.QueryString["un"]);
      

  2.   

    至于 Base64 用法同上 UrlDecode 一样
      

  3.   

    樓上的你的意思我明白选择使用模板列對吧?如果不是用模板列就直接用HyperLinkField 來實現,直接設置它的DataNavigateUrlFormatString 屬性。用DataNavigateUrlFormatString 能實現嗎?