我想利用asp.net WebControl类(TextBox,CheckBoxList,Button等)来构建一个可以使用TemplateControl.ParseControl()解析为Control的字符串。
我使用以下代码从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\" />"
答案 0 :(得分: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;
}