本来就是空的.因为你前台虽然有了ruant=server 但是 这不是运行的时候有的..而且这个东西你看源码也是有ruant=server 
所以一般情况下没这么干的.输出的ruant=server不会被识别 就好像有人输出<asp:button onclick...一样.如果想取值..使用request["name"]即可..

解决方案 »

  1.   

    参考这个http://www.cnblogs.com/insus/archive/2012/09/24/2700658.html虽然不是checkbox,但它是TextBox。明白之后,你的问题也不是问题了。
      

  2.   

    动态生成空间实在页面初始化以后,页面初始化会把服务器空间转成HTML空间,你动态生成的控件没有经过编译初始化的步骤,自然找不到,所以你要后台生成要生成HTML控件  在用前台方法或者楼上说的方法获取
      

  3.   

    user_list.InnerHtml = "<input type=\"checkbox\" runat=\"server\" id="buddha">";这个代码只是随便设置了一个字符串,字符串根本不是什么asp.net控件。随便字符串怎们就等价于一个动态创建的一个实际的控件呢?你的这个创意是不对的。.net没有什么“万能的”动态功能,字符串不等于程序。
      

  4.   

    如果你学了一些asp.net课程,或许(我不知道不同的学校是如何教asp.net课程的)你可以知道asp.net基本的页面生成机制。你在aspx上写的一堆类似html语法的代码,需要经过asp.net编译器生成成千上万行“动态创建控件”的代码,然后编译,最后生成dll文件,最后再部署到 bin 目录下。而你写的这个字符串,给浏览器端去解析 DOM。可是目前还没有听说哪一个浏览器(包括ie浏览器)认识这种 runat="server" 属性呢。
      

  5.   

    后台动态创建控件,不是去写其对应的aspx页面中的代码,而应该是用类
    像你那样应该是
    TextBox txt = new TextBox();
    //......
    user_list.Controls.Add(txt)