簡體   English   中英

RenderControl output WebControl 標記可以代替 HTML 標記嗎?

[英]Can RenderControl output WebControl markup instead of HTML markup?

我想利用 asp.net WebControl 類(TextBox、CheckBoxList、Button 等)來構建一個可以使用 TemplateControl.ParseControl() 解析為控件的字符串。

我正在使用來自 WebControl 的 output 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\" />"

是否可以改為 output 以下?:

"<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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM