2011-06-08 12 views
1

私は、TemplateControl.ParseControl()を使用してコントロールに解析できる文字列を構築するために、asp.net WebControlクラス(TextBox、CheckBoxList、Buttonなど)を活用したいと考えています。RenderControlはHTMLマークアップの代わりにWebControlマークアップを出力できますか?

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

答えて

1
?:代わりに次のように出力することが可能です

必要なコントロールタイプごとに文字列を保存して、それをキーで参照するのはなぜですか?それは一度だけの努力に過ぎません。

string ctrlMarkup = GetMarkupFor("Textbox") 

はおそらく、同上およびその他のプロパティを変更したい、とあなたはインスタンス化し、おそらくそれにキャストした後、特定のタイプだということを行うことができる必要があります。

または、getterにparseControlを移動し、準備ができているコントロールを返します。

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; 
} 
関連する問題