2011-06-08 117 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; 
}