0

我有一个包含一系列控件的控件。我想要做的是获取字符串输出。我尝试了一个我正在研究的示例,但似乎由于某些控件是输入文本框,因此存在问题。它告诉我它需要一个带有 runat="server" 设置的表单。我的结论是它没有读取各种标记。

有没有办法绕过它?我正在考虑用表单包装数据后端......

所以不是root -> (control1, control2),而是root -> form -> (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->form->(1,2) 但现在要尝试。编辑:我做了这个尝试,它不再导致一个 HTMLException,但现在一个无效的操作异常: RegisterForEventValidation 只能在 Render() 期间调用;

我也尝试覆盖 VeriftRenderingInServerForm(Control control){} 但这也不起作用,但也许我做错了这部分?

4

2 回答 2

0

我建议您使用此代码-基于Controls propertyPlace Holder

var controlsFlow = new StringBuilder() ;
foreach(var control in yourPlaceHolder.Controls)
{
  controlsFlow.Append(control.Id);
}

注意:将 runat="server" 添加到您的 PlacHolder

于 2012-10-31T16:45:14.947 回答
0

您正在尝试输出 ASP.net 控件,这些控件需要 runat="server" 控件,因为它们不是合法的 HTML 控件。

如果您不想在后面的代码中访问它们,那么您可以使用常规的 HTML 标记。例如

于 2012-10-31T16:45:46.660 回答