1

asp.net WebControl クラス (TextBox、CheckBoxList、Button など) を活用して、TemplateControl.ParseControl() を使用してコントロールに解析できる文字列を作成したいと考えています。

次のコードを使用して、WebControl から HTML を出力しています。

TextBox control = new TextBox();
StringBuilder sb = new StringBuilder();
HtmlTextWriter objHtml = new HtmlTextWriter(new System.IO.StringWriter(sb));
control.RenderControl(objHtml);

これは以下を出力します:

"<input name=\"Phone\" type=\"text\" id=\"Phone\" />"

代わりに以下を出力することは可能ですか?:

"<asp:Textbox name=\"Phone\" id=\"Phone\" runat=\"server\" />"
4

1 に答える 1

1

必要なコントロールの種類ごとに文字列をどこかに保存し、それをキーで参照してみませんか? それは一度だけの努力です。

string ctrlMarkup =  GetMarkupFor("Textbox")

おそらく Id やその他のプロパティを変更したいと思うでしょう。インスタンス化して、場合によってはそれを特定の型にキャストした後に、それを行うことができるはずです。

または、parseControl をゲッターに移動して、既製のコントロールを返します。

string id= "Button1";
string text = "Save";
Control tbx= GetControl("TextBox", id, text);

public Control GetControl(string type, string id, string text)
{
   Control ctrl;

   switch(type)
   {
      case: "TextBox"
      ctrl= (TextBox)TemplateControl.ParseControl("<asp:Textbox runat=\"server\" />");
      ((TextBox)ctrl).Id = id;
      ((TextBox)ctrl).Text = text;
      break;
   }

   return ctrl;
}
于 2011-06-24T11:12:53.163 に答える