2011-06-08 66 views
1

我想利用asp.net WebControl类(TextBox,CheckBoxList,Button等)来构建一个可以使用TemplateControl.ParseControl()解析为Control的字符串。RenderControl可以输出WebControl标记而不是HTML标记吗?

我使用下面的代码输出HTML从WebControl的:

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\" />" 

回答

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; 
} 
相关问题