asp中的渲染控件说我需要一个带有runat = server的表单标签,但是代码看不到前端会注意到它

时间:2012-10-31 16:38:34

标签: asp.net controls

我有一个控件,其中填充了一系列控件。我想要做的是获取字符串输出。我尝试了一个我正在研究的例子,但似乎由于某些控件是输入文本框,因此存在问题。它告诉我它需要一个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(控制控件){},但这也不起作用,但也许我这部分错了吗?

2 个答案:

答案 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