newfile.setAttribute("id", name )
 newfile.setAttribute("runat","server")
 newfile.setAttribute ("type","file")     
 tb.appendChild (newfile) 
 (newfile.runat = "server") 这是我动态添加的 input file控件 我用了2种方法 给 runat 赋值成server,但是 当我上交form的时候 这个input file选择的文件 并不上交。如果我静态的扯进2个inputfile 手动设置他们的runat属性 =server,这两个inputfile里面的文件都上交到服务器了 所以我判定 一定是我动态添加这个runat属性的时候 方法不对。如何正确的给inputfile添加 runat属性啊??静态的inputfile就上交了 动态的就不行。。崩溃中

解决方案 »

  1.   

    sorry
    在asp.net中,前台是不可以生成服务器端控件,因为viewstate会保存有哪些是服务器端控件,且有些什么状态
      

  2.   

    楼主仔细看看page 的生命周期!
    newfile.setAttribute( "runat ", "server ") ;这样是在客户端运行的!服务器不会对此属性进行解析!
      

  3.   

    你只用添加一个 runat="server"的 file 控件。后面js 生成的控件可以不用 runat="server"后台用 Request.PostFileCollection 好像是这么一个名字,你查查。很久不用,不记得了。然后遍历这个Collection这样就可以获得全部的上传的 file 
      

  4.   

    呵呵 还是我粗心了。同志们说的对。。一个有server就可以了。我是没有 给name属性赋值 所以后台才接不到上传的文件。 我一直误认为 后太是用id来接收文件的 原来是依靠 name。。
    不过还是谢谢大家的热心帮忙!