在前一个页面中用如下方法传递keshi这个参数
<ItemTemplate>
<a href='yuyue2.aspx?keshi=<%#DataBinder.Eval(Container.DataItem,"keshi")%>'>
<%# DataBinder.Eval(Container.DataItem,"keshi")%>
</a>
</ItemTemplate>在后一个页面中用如下方法
string t=Request["keshi"];
接受参数但是问题是:比如前一个页面传递参数“消化科” 到下一个页面接受到的就变成“消化”两个字,这个怎么解决呢?

解决方案 »

  1.   

    server.UrlEncode(DataBinder.Eval(Container.DataItem,"keshi"))
    string t=Server.UrlDecode(Request["keshi"]);
      

  2.   


    public string urlEncode(object str)
    {
        return server.UrlEncode(str.ToString());}
      

  3.   

    你们可以注意一下,这也是网页制作人员最容易的地方当通过“?”携带请求参数的时候,必须经过 UrlEncode 处理否则,WebForm1.aspx?str=d+f 在 Server 端接受 str 时就成了 "d f"同理,汉字也要进行处理:把它变成 B4%AB%BC%C7%C6%AC 的格式进行传递处理方法就是 server.UrlEncode(str);
      

  4.   

    <a href='yuyue2.aspx?keshi=<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem,"keshi"))%>'>
    <%#DataBinder.Eval(Container.DataItem,"keshi")%>
    </a>
    使用如上方法出现如下错误提示:  编译器错误信息: CS1502: 与“System.Web.HttpServerUtility.UrlEncode(string)”最匹配的重载方法具有一些无效参数,这个怎么回事呢?
      

  5.   

    <a href='<%#BindLink(((System.Data.DataRowView)Container.DataItem)["keshi"].ToString())%'>
    <%#DataBinder.Eval(Container.DataItem,"keshi")%></a>
    .cs 中加入以下函数public string BindLink(string lnk)
    {
        string str =Server.UrlEncode(lnk);
        return "yuyue2.aspx?keshi="+str;
    }第二種方法,
    <a href='yuyue2.aspx?keshi=<%#Server.UrlEncode(((System.Data.DataRowView)Container.DataItem)["keshi"].ToString())%>'>
    <%#DataBinder.Eval(Container.DataItem,"keshi")%>
    </a>
      

  6.   

    如果是 DataReader 做為綁定的數據源則要把 System.Data.DataRowView 變為 System.Data.Common.DbDataRecord