我有一个控件,其中填充了一系列控件。我想要做的是获取字符串输出。我尝试了一个我正在研究的例子,但似乎由于某些控件是输入文本框,因此存在问题。它告诉我它需要一个runat =“server”设置的表单。我的结论是,它不是在阅读各种标记。
有没有办法绕过它?我想用一个表单包装数据后端......
所以代替root - > (control1,control2),它会像root一样 - >形式 - > (control1,control2)。
我一直在做的尝试:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWritertw = new HtmlTextWriter(sw);
root.RenderControl(tw);
错误发生在根目录。
在标记中,我尝试做类似的事情:
<form runat=server><asp:pladeholder id="root" /></form>
但那根本没用。
我还没有尝试root-&gt; form-&gt;(1,2),但现在尝试一下。 编辑:我做了这个尝试,它不再导致一个HTMLException,但现在无效的操作异常: RegisterForEventValidation只能在Render();
我也尝试重写VeriftRenderingInServerForm(控制控件){},但这也不起作用,但也许我这部分错了吗?
答案 0 :(得分:0)
我建议您使用此代码 - 基于Place Holder的Controls property
var controlsFlow = new StringBuilder() ;
foreach(var control in yourPlaceHolder.Controls)
{
controlsFlow.Append(control.Id);
}
Nota:将runat =“server”添加到PlacHolder
答案 1 :(得分:0)
您正在尝试输出ASP.net控件,这些控件需要runat =“server”控件,因为它们不是合法的HTML控件。
如果您不想在后面的代码中访问它们,那么您可以使用常规HTML标记。 E.g