前台有一个Div,id="CardDiv" runat="server";
然后我在后台string cardcontent=CardDiv.innerHTML;会出错,提示:无法获取 CardDiv 的内部内容,因为该内容不是文本。
为什么会这样?正确的写法是什么?还有请讲一下为什么这样会出错呢?

解决方案 »

  1.   

    那是因为你的CardDiv里包含了 run="server"的控件。如果是这样不会出错:
    <div id="CardDiv" runat="server">
            <table>
                <tr>
                    <td>
                        ssssssssss
                    </td>
                </tr>
            </table>
        </div>但是如果是这样的话就会出错:
    <div id="CardDiv" runat="server">
            <table id="table1" runat="server">
                <tr>
                    <td>
                        ssssssssss
                    </td>
                </tr>
            </table>
        </div>你可以试一下看看
      

  2.   

    this.divmenu.InnerHtml;
    好像是大写的InnerHtml
      

  3.   

    是啊...DIV中是有runat="server"的控件,里面有一个IMG和TABLE都是runat="server"的
    如果我现在要将DIV中的这些东西取出来,是不是没有办法?
    我现在就是想把DIV中的这些HTML代码取出来.有方法吗?
      

  4.   

    以前做过,基本方法:在后台CS文件代码后写(你大体参考下吧....不知合不合你用..)System.Text.StringBuilder strb = new System.Text.StringBuilder();
            System.IO.StringWriter sw = new System.IO.StringWriter(strb);
            System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
            CardDiv.RenderControl(htw);//-------------------------注册此外,CardDiv为你要转出的HTML代的对像(或控件)
            /////还有一点,如果你已经知道CardDiv的ID,可以后台外,用findcoutrol(id),返回关后ID为你要查的ID对像(或控件),然后与上面那行一样用,即可,
            /////特别注意,代码大体是这样,现在发贴是在外面上网时发的,代码可能写错,但你看得明白意思就可以自己做,...........代码有任何问题,本人不做任何解析..呵呵..
            string s = strb.ToString();
            return s;
      

  5.   

    打字中文:-------------------------注册此外,CardDiv为你要转出的HTML代的对像(或控件) 
    中的注册改为"注意".特此鉴定..哈哈
      

  6.   

    string cardcontent=CardDiv.innerHTML.ToString();
      

  7.   

    还是没有解决啊..
    现在我得出的结论是:
    1)
    前台:
    <div id="CardDiv" runat="server"> 
        <table id="table1" runat="server"> 
            <tr> 
                <td> 
                  内容....
                </td> 
            </tr> 
       </table> 
    </div> 后台:
    string cardcontent=CardDiv.innerHTML;
    会出错,提示:无法获取 CardDiv 的内部内容2)
    <div id="CardDiv" runat="server"> 
        <table id="table1">
            <tr> 
                <td> 
                  内容:<%=后台变量%>
                </td> 
            </tr> 
       </table> 
    </div> 
    string cardcontent=CardDiv.innerHTML;
    CardDiv.innerHTML得到的值为空;3)
    <div id="CardDiv"> 
             <table> 
                 <tr> 
                     <td> 
                       内容
                     </td> 
                 </tr> 
             </table> 
    </div> 
    string cardcontent=CardDiv.innerHTML;
    可以得到内容似乎是前台用到了后台的某些东西后,格式会改变,所以后台取值的时候会出问题...这个需要怎么解决啊??
      

  8.   

    第四楼正解,经测试已成功通过....测试过程:
    前台:<body>
        <form id="form1" runat="server">
        <div>
        <div id="CardDiv" runat="server">  
         <table id="table1" runat="server">  
             <tr>  
                 <td>  
                  内容.... 
                 </td>  
             </tr>  
        </table>  
    </div>
        </div>
        </form>
    </body>
    后台:
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Text.StringBuilder strb = new System.Text.StringBuilder();
            System.IO.StringWriter sw = new System.IO.StringWriter(strb);
            System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
            CardDiv.RenderControl(htw);        string str = strb.ToString();///------------------------------------此处已成功获取CardDiv内的,信息        htw.Close();
            sw.Close();
                }
    }不行再找我Q:214958266
      

  9.   

    补兖......获取或设置前台元素值,在此讲的有两种.
    第一种:假设前台元素为:<P id="inputmessage" runat="server"></P>获取:
    System.Text.StringBuilder strb = new System.Text.StringBuilder(); 
    System.IO.StringWriter sw = new System.IO.StringWriter(strb); 
    System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw); 
    inputmessage.RenderControl(htw);
    string str = strb.ToString();//--------------------------->>此处获取值//str的值就是元素inputmessage的值设置:
    inputmessage.InnerHtml="<br><br>inputmessage已付值";//--------------------------->>此处付值
    第二种:假设前台元素为:<P id="inputmessage" runat="server"></P>获取:System.Web.UI.HtmlControls.HtmlGenericControl T;
    T=(HtmlGenericControl)this.Page.FindControl("inputmessage");
    string str =T.InnerHtml;//--------------------------->>此处获取值//str的值就是元素inputmessage的值设置:
    System.Web.UI.HtmlControls.HtmlGenericControl T;
    T=(HtmlGenericControl)this.Page.FindControl("inputmessage");
    T.InnerHtml="<br><br>inputmessage已付值";//--------------------------->>此处付值