GridView里放了个
<asp:HyperLinkField DataNavigateUrlFields="编号,相册名" DataNavigateUrlFormatString="BrowserPicture.aspx?id={0}&amp;album={1}"
                    DataTextFormatString="查看相册" HeaderText="查看相册" Text="查看相册" />BrowserPicture.aspx?id={0}&album={1},这个album里的值如果是中文的话,死活传不过去,如果在web.config那成GB2312的话,可以传过去。有什么办法不改config,能传值过去?
有人用url编码后传过去,可是 这个url 在HyperLinkField 里,怎么给他编码啊?

解决方案 »

  1.   

    我就是想把这个相册名传过去,有没有什么其它办法也能传呢?post能不能传中文呢?
      

  2.   

    将中文用UrlEncode函数编码,
    获取参数的页面用UrlDecode解码。
      

  3.   

    你这样试试 
    设置web.config文件。 
    <system.web> 
    <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> 
    </system.web> 你传递中文之前,将要传递的中文参数进行编码 
    string Name = "中文参数"; 
    Response.Redirect("class.aspx?Name="+Server.UrlEncode(Name)); 
    然后在接收时再进行解码。 
    string Name = Request.QueryString["Name"]; 
    Response.Write(Server.UrlDecode(Name)); 
      

  4.   


    设置下编码 
    UTF-8 GB2312 GBK ..
      

  5.   

    你们说的,我都知道,我是想不改变utf-8编码,获得<asp:HyperLinkField >这例,改变然后给他的url编码。怎么获得这个HyperLinkField ?
      

  6.   

    那只能循环找了! 毕竟是模版列,一列都要找出来。
    在GridView1_DataBound中找出来然后编码
      

  7.   

    protected void GridView1_DataBound(object sender, EventArgs e)
        {
            foreach (GridViewRow row in this.GridView1.Rows)
            {
                foreach (TableCell cell in row.Cells)
                {
                    if (cell.Controls[0] is HyperLink)
                    {
                        HyperLink hyperlink = (HyperLink)cell.Controls[0];
                        //下面设置编码
                    }
                }
            }
        }
    这样就可以找到,这只是个例子,还有很多条件没加,自己完善吧。