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 移动到你的 getter 中并返回一个现成的控件。

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