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)はまだ試していませんが、今から試します。編集:私はこの試みを行いましたが、1つのHTMLExceptionは発生しなくなりましたが、無効な操作例外が発生しました: RegisterForEventValidationはRender()中にのみ呼び出すことができます。

VeriftRenderingInServerForm(Control control){}もオーバーライドしようとしましたが、どちらも機能しませんでしたが、この部分を間違って実行していた可能性がありますか?

4

2 に答える 2

0

Controls propertyこのコードをお勧めします-プレースホルダーに基づいています

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 コントロールを出力しようとしていますが、正当な HTML コントロールではないため、runat="server" コントロールが必要です。

コードビハインドでそれらにアクセスしたくない場合は、代わりに通常の HTML タグを使用できます。例えば

于 2012-10-31T16:45:46.660 に答える