Asp.net RenderControl是否可以输出WebControl标记而不是HTML标记?

Asp.net RenderControl是否可以输出WebControl标记而不是HTML标记?,asp.net,web-controls,rendercontrol,Asp.net,Web Controls,Rendercontrol,我想利用asp.net WebControl类(TextBox、CheckBoxList、Button等)构建一个字符串,该字符串可以使用TemplateControl.ParseControl()解析为控件 我使用以下代码从网络控件输出HTML: TextBox control = new TextBox(); StringBuilder sb = new StringBuilder(); HtmlTextWriter objHtml = new HtmlTextWriter(new Syst

我想利用asp.net WebControl类(TextBox、CheckBoxList、Button等)构建一个字符串,该字符串可以使用TemplateControl.ParseControl()解析为控件

我使用以下代码从网络控件输出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\" />"
“”

为什么不为所需的每种控件类型存储一个字符串,然后通过键引用它?这只是一次努力

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;
}
string id=“Button1”;
string text=“保存”;
控件tbx=GetControl(“文本框”,id,文本);
公共控件GetControl(字符串类型、字符串id、字符串文本)
{
控制ctrl;
开关(类型)
{
案例:“文本框”
ctrl=(文本框)TemplateControl.ParseControl(“”);
((文本框)ctrl).Id=Id;
((文本框)ctrl).Text=Text;
打破
}
返回ctrl;
}

为什么不为所需的每种控件类型存储一个字符串,然后通过键引用它?这只是一次努力

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;
}
string id=“Button1”;
string text=“保存”;
控件tbx=GetControl(“文本框”,id,文本);
公共控件GetControl(字符串类型、字符串id、字符串文本)
{
控制ctrl;
开关(类型)
{
案例:“文本框”
ctrl=(文本框)TemplateControl.ParseControl(“”);
((文本框)ctrl).Id=Id;
((文本框)ctrl).Text=Text;
打破
}
返回ctrl;
}