第一种DataList中: 
<a href='product_view.aspx?ID= <%#DataBinder.Eval(Container.DataItem,"id")%>'> </a> 
---------------------------------------------------- 
第二种 
DataList中用ImageButton: 
PostBackUrl ='product_view.aspx?ID= <%#DataBinder.Eval(Container.DataItem,"id")%>' 问号: 
第一种是以接收到的。但第二种怎么没传到值呢?错在哪呢?Request["id"]接不到值的 
怎么才可以呢,谢谢

解决方案 »

  1.   

    ImageButton是服务端控件,那么对其PostBackUrl的设置何必要走一个弯路呢?
    PostBackUrl =string.Format('product_view.aspx?ID={0}',id);你在服务端控件的属性里,又用到了客户端访问服务端的代码,实在是没有必要,问题也就出在这里。
      

  2.   

    PostBackUrl = <%# "product_view.aspx?ID="+DataBinder.Eval(Container.DataItem,"id").ToString()%>' 这样应该可以的!
      

  3.   

    个人不太喜欢在html代码里嵌入c#的代码,完全可以在服务器端解决,同意一楼的说法。
      

  4.   

    或者可以这样写
    <asp:ImageButton ID="ImageButton1" runat="server"  oncommand="ImageButton1_Command" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"id")%>' />protected void ImageButton1_Command(object sender, CommandEventArgs e)
    {
        Response.Redirect("product_view.aspx?ID=" + Convert.ToInt32(e.CommandArgument));
    }
      

  5.   

    或者可以这样写
    <asp:ImageButton ID="ImageButton1" runat="server"  oncommand="ImageButton1_Command" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"id")%>' />protected void ImageButton1_Command(object sender, CommandEventArgs e)
    {
        Response.Redirect("product_view.aspx?ID=" + Convert.ToInt32(e.CommandArgument));
    }