実行時にHTML要素を動的に構築し、レンダリングした要素を文字列として返すWebサービスを呼び出すときに例外が発生します。AssociateControlIDを使用してダイナミックラベルWebControlをレンダリングすると例外が発生する
System.Web.HttpException:ラベルに関連付けられているID「txtCertificate」との制御を見つけることができません「lblCertificate」
次のエラーがRenderControl()メソッドの呼び出しで発生します。
StringWriter stringWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(stringWriter);
// Create System.Web.UI.WebControls.Panel (container)
Panel pnlFRow1 = new Panel();
pnlFRow1.CssClass = "f-row";
// Create System.Web.UI.WebControls.Textbox
TextBox txtCertificate = new TextBox();
txtCertificate.ID = "txtCertificate";
txtCertificate.CssClass = "f-input f-input-full";
// Create System.Web.UI.WebControls.Label
Label lblCertificate = new Label();
lblCertificate.ID = "lblCertificate";
lblCertificate.CssClass = "f-label f-label-full";
lblCertificate.AssociatedControlID = txtCertificate.ID;
lblCertificate.Text = "Certificate:";
Panel pnlCertificate = new Panel();
pnlCertificate.CssClass = "f-label f-label-full";
// Binding child controls to parent controls
pnlFRow1.Controls.Add(lblCertificate);
pnlFRow1.Controls.Add(pnlCertificate);
pnlCertificate.Controls.Add(txtCertificate);
// Render control
pnlContent.RenderControl(writer);
// Return rendered HTML
return writer.InnerWriter.ToString();
私はこれが注文事項が、しかしこれは、同じエラーが発生する問題があるかもしれないことを考えて行pnlCertificate.Controls.Add(txtCertificate);
後行pnlFRow1.Controls.Add(lblCertificate);
を置いてみました。
属性は、Label
WebControlを実際の<label>
要素としてレンダリングし、入力コントロールの前に表示する必要があります。
属性を追加するとの唯一の問題は – MPaul
うーん、奇妙な 'Label' WebBrowserコントロールが' '
ここでは何かをしていますが、唯一の問題は他のプロパティをレンダリングしないことです。例えば、あなたの例の 'ID'プロパティはレンダリングされません。 – MPaul