日期:2014-05-17  浏览次数:20474 次

如何获取服务控件的内容代码
有一个HtmlForm htmlForm ,包含runat="server"代码,如下红色代码所示,我想用 string str=htmlForm.innerHtml取得代码文本。可是提示错误:“无法获取 innerHtml 的内部内容,因为该内容不是文本。”
 <form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" Height="641px" Width="511px"></asp:TextBox>
</div>
</form>

我用网上说的方法,StringBuilder sb = new StringBuilder(); 
    StringWriter sw = new StringWriter(sb); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 
    htmlForm .RenderControl(htw); 
然后调用Response.Write(sb.ToString());,得到的文本是下面兰色代码所示。可这并不是我想要的结果。我如何才能最得上面包含runat="server"代码(上面红色部分)
  <form name="form1" method="post" action="" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEzMzE5MDUyNjFkZFGxJW7d6YIoAtGbIeoc7bamtFmTjnBEeVp/LvrtDyoy" />
</div>

<div>
<input name="TextBox1" type="text" value="" id="TextBox1" />
</div>
</form>


------解决方案--------------------
这个被编译到dll中了,哪里来的什么“上面包含runat="server"代码(上面红色部分)”啊?

如果想得到,你干脆把这个文件保存为资源文件然后读取文件好了。
------解决方案--------------------
所谓“得到”,是服务器输出html流,还是客户端DOM操作?你能否说出来是哪一个阶段?
------解决方案--------------------
探讨
有一个HtmlForm htmlForm ,包含runat="server"代码,如下红色代码所示,我想用 string

------解决方案--------------------
你新建一个aspx页面不写任何东西
在Page_Load中遍历controls
C# code

 foreach (Control c in this.Controls)
            {
                if (c.ClientID == "form1")
                {
                    string text = (c as System.Web.UI.HtmlControls.HtmlForm).InnerHtml;
                   //(c as System.Web.UI.HtmlControls.HtmlForm).InnerHtml="test";你也可以赋值。
                    Response.Write(text);
                    Response.End();
                }
            }