<% foreach (RoomEntity Room in RoomList){
      %>       <asp:LinkButton ID="mylinkButton"  CommandArgument="<%=Room.ID%>" runat="server" onclick="mylinkButton_Click">Look</asp:LinkButton>
    <% } %>未什么后台获取到的 CommandArgument  是字符串 "<%=Room.ID%>" 而不是 Room 的Id

解决方案 »

  1.   

     CommandArgument=<%#Eval("id") %>  引号去掉
      

  2.   

    用Entitylist 集合循环,不能用到Eval方法啊
      

  3.   

    明明是你自己赋值的,LZ的写法有点奇特,全部放到CS中好了
      

  4.   

    目测LZ的循环写的有问题服务器控件的ID都是唯一,你这样循环下来这些控件都是一个ID,觉得会对吗感觉LZ要换一下设计
      

  5.   


    我以前用GridView 都是这样绑定,不过现在 数据源比较复杂了,不能用GridView 
      

  6.   

    你这是循环里的Room,局部变量,都不在同一个作用域里,肯定不行的,你把整个循环放在后台函数里吧,然后后台输出
    public string GetRooms()
    {
        StringBuilder sb=new StringBuilder();
        foreach (RoomEntity Room in RoomList)
       {
               sb.AppendFormat(" <asp:LinkButton ID=\"mylinkButton\"  CommandArgument=\"{0}\" runat=\"server\" onclick=\"mylinkButton_Click\">Look</asp:LinkButton>",Room.ID);
       } 
       return sb.ToString();}前台:
    <%=GetRooms()%>
      

  7.   


    用这个方法出来的Html 是 <asp:LinkButton ID="mylinkButton"  CommandArgument= mypara runat="server" onclick="mylinkButton_Click">Look<asp:LinkButton>Html 是这个 ,不正常
      

  8.   

    嗯,后台输出<asp:LinkButton不行,除非改成输出<a ></a>形式的,那换种方式吧,不要输出了,改成
    后台Page_Load里
    if(!IsPostBack)
    {
    foreach (RoomEntity Room in RoomList)
    {
    LinkButton lb = new LinkButton();
    lb.Click += new EventHandler(mylinkButton_Click);//添加事件
    lb.CommandArgument = Room.ID.ToString();//你要保存的参数
    div1.Controls.Add(lb);//添加到页面的form
    }
    }前台:
    <div runat="server" ID="div1"></div>