我用asp.net2.0开发,在页面里有段js代码是弹出一个js造的div。我想在这个div里放 服务器控件(TextBox,Button) 可是总是出错, var msgObj=document.createElement("div")//创建一个div对象(提示框层)
   msgObj.setAttribute("id","msgDiv");
   msgObj.setAttribute("align","center");
   msgObj.setAttribute("runat","server");
var wzu=document.createElement("p");
    wzu.style.margin="1em 0"
    wzu.setAttribute("id","usernametext");
    wzu.innerHTML=" <asp:TextBox ID='TextBox1' runat='server'></asp:TextBox>";
document.getElementById("msgDiv").appendChild(wzu);错误如下:类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内不知道大家遇到过这样的问题没有?谢谢了。

解决方案 »

  1.   

    同样创建TextBox1,然后使用 wzu.appendChild
      

  2.   

    你看看你生成的代码,没有放在<form id="form1" runat="server"></form> 中.
      

  3.   

    wzu.innerHTML=" <asp:TextBox ID='TextBox1' runat='server'> </asp:TextBox>"; 这句代码有问题, 你加的是服务器控件, 但是JS的DOM操作对象是HTML控件,应该改为:wzu.innerHTML=" <input type='text' ID='TextBox1' />"; 
      

  4.   

    直接写好,div 里面放着你要用的button   /div控制div显示和隐藏
      

  5.   

    你看看你生成的代码,没有放在 <form id="form1" runat="server"> </form> 中.
    ________________________
    这个我已经试过了。。可是我现在的页面已经有了个form 。所以老是提示不能有两个form  (我第二个form和第一个的ID 是不一样的也不行)
    应该改为: wzu.innerHTML=" <input type='text' ID='TextBox1' />"; 
    ——————————————————————
    我现在必须用 服务器控件
      

  6.   


        wzu.innerHTML=" <asp:TextBox ID='TextBox1' runat='server'> </asp:TextBox>"; 这种标记浏览器没法解释的.....,这个是给编译器使用的,转换为对应的html标记,长见识了,这样来创建服务器控件
      

  7.   

    给你个思路...先放一个服务端的隐藏域在页面上...DIV里面就放HTML组件.提交的时候把<INPUT>的值先赋给隐藏控件再提交...你在服务端也好读了.
    这么做需求是实现的,但是没看见有什么好处.
      

  8.   

        wzu.innerHTML=" <asp:TextBox ID='TextBox1' runat='server'> </asp:TextBox>"; 这种标记浏览器没法解释的.....,这个是给编译器使用的,转换为对应的html标记,长见识了,这样来创建服务器控件_______________________________
    对!!突然忘记了。。好的谢谢。。现在有套其他的思路了。。
    给你个思路...先放一个服务端的隐藏域在页面上...DIV里面就放HTML组件.提交的时候把 <INPUT>的值先赋给隐藏控件再提交...你在服务端也好读了. 
    这么做需求是实现的,但是没看见有什么好处.
    ——————————————————————————————
    不错的思路,谢谢。。
    明天上午 揭贴。。看看还有什么还的思路吗。。