我在Gridview上用个HyperLinkField链接到指定页面并附加上一些参数,跳转到另一个页面,在这个页面上获取参数并执行查询,现在,在Gridview上面有的HyperLinkField跳转过去没问题,有的却有问题,我在跳转页面获取的参数好像有问题,但不知道要怎么解决,求各位大神帮助小弟一下下。。这是Gridview上的跳转超链接的前台代码。。
<asp:HyperLinkField HeaderText="通道名称" DataNavigateUrlFields="channelname,cstcode" DataNavigateUrlFormatString="~/PrivinceInfoByChannel.aspx?Channel={0}&cstcode={1}" DataTextField="channelname" ItemStyle-ForeColor="blue" />这是跳转后的页面的后台代码
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
            string channelName = Request.QueryString["Channel"];  //在这个地方获取到的参数不正常。。
            
            string cstcode = Request.QueryString["cstcode"];
            BindData(channelName, cstcode);
        }
    }
这个问题要怎么解决呢?

解决方案 »

  1.   

    如果有中文的话,传参时url编码,取出时url解码
    Server.UrlEncode()
    Server.UrlDecode()
      

  2.   

    你可以这样去实现。protected string GetUrl(string Channel,string cstcode)
    {
      return "~/PrivinceInfoByChannel.aspx?Channel="+Server.HtmlEncode(Channel)+"&cstcode="+Server.HtmlEncode(cstcode);
    }
    前台:<asp:HyperLinkField HeaderText="通道名称" DataNavigateUrlFields="channelname,cstcode" DataNavigateUrlFormatString='<%#GetUrl(Eval("Channel").ToString(),Eval("cstcode").ToString())%>' DataTextField="channelname" ItemStyle-ForeColor="blue" />接受的页面
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                string channelName =Server.HtmlDecode(Request.QueryString["Channel"]!=null?Request.QueryString["Channel"]:"");  //在这个地方获取到的参数不正常。。
                
                string cstcode = Server.HtmlDecode(Request.QueryString["cstcode"]!=null?Request.QueryString["cstcode"]:"");
                BindData(channelName, cstcode);
            }
        }希望对你有用。还有很多的方法!这个办法只是有点笨。还可以通过GridView一个事件到后台循环动态的去给HyperLink赋值。看你如何用。