Забавно, но я только что просмотрел вчера мой старый код. Литералы могут сделать это. Первоначально я делал это, чтобы передавать пользовательские элементы управления через вызов веб-службы из Javascript (да, я знаю ... это было весело), но это также будет соответствовать вашим потребностям.
protected void Page_Load(object sender, EventArgs e)
{
litTest.Text = RenderUserControlAsString("WebUserControl1.ascx");
}
private string RenderUserControlAsString(string path)
{
Page page = new Page();
UserControl control = (UserControl)page.LoadControl(path);
//add the control to the page
page.Controls.Add(control);
StringWriter sw = new StringWriter();
HttpContext.Current.Server.Execute(page, sw, true);
//return the rendered markup of the page, which only has our single user control
return sw.ToString();
}
Бросьте ваш литерал на страницу и присвойте его текстовое значение RenderUserControlAsString («Путь к вашему пользовательскому элементу управления»). С учетом сказанного в пользовательском элементе управления вы должны заключить дочерние элементы в элемент управления формы.
<form runat="server"> <asp:TextBox id="txtTest" Text="From User Control" runat="server" /> </form>
Надеюсь, это поможет!