Это грязное решение, которое я использовал на данный момент (приведите его в действие, затем сделайте это правильно, верно?).
Я уже создал новый класс, который наследует класс UserControl, и на основе которого были созданы все остальные созданные мной «UserControls». Я назвал это formPartial (кивок на Rails), и это происходит внутри открытого метода renderMyHTML () строки:
TextWriter myTextWriter = new StringWriter();
HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter);
UserControl myDuplicate = new UserControl();
TextBox blankTextBox;
foreach (Control tmpControl in this.Controls)
{
switch (tmpControl.GetType().ToString())
{
case "System.Web.UI.LiteralControl":
blankLiteral = new LiteralControl();
blankLiteral.Text = ((LiteralControl)tmpControl).Text;
myDuplicate.Controls.Add(blankLiteral);
break;
case "System.Web.UI.WebControls.TextBox":
blankTextBox = new TextBox();
blankTextBox.ID = ((TextBox)tmpControl).ID;
blankTextBox.Text = ((TextBox)tmpControl).Text;
myDuplicate.Controls.Add(blankTextBox);
break;
// ...other types of controls (ddls, checkboxes, etc.)
}
}
myDuplicate.RenderControl(myWriter);
return myTextWriter.ToString();
Недостатки на макушке:
- Вам нужно выписывать регистр с каждым
возможный контроль (или контролирует вас
ожидать).
- Вам нужно перевести все
важные атрибуты из
существующий элемент управления (текстовое поле и т. д.) для
новый пустой элемент управления.
- Не в полной мере использовать
Управляет методом RenderControl.
Было бы легко испортить 1 или 2. Надеюсь, однако, это поможет кому-то еще придумать более элегантное решение.