我有这个代码:
public static string RenderView(string path)
{
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl(path);
pageHolder.Controls.Add(viewControl);
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, output, false);
return output.ToString();
}
运行自:
[WebMethod]
public string GetReportsHTML()
{
string output = "";
output = ViewManager.RenderView("ReportsControl.ascx");
return output;
}
这是为了测试呈现 ASCX 文件并将它们从 SOAP/REST 服务中吐出。
问题是,如果某些控件(runat=server 的)没有封装在带有 runat=server 的标签中,它们就会失败。
解决方案在这里,但该解决方案假设在一个 ASPX 文件中,我可以在其中编辑标记。
我将如何以编程方式构建页面、添加表单、设置 runat=server 以便我可以遵循该解决方案并将我的控件添加到表单控件?