我有这个代码:
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 的标记中,则会失败。
解决办法是here,但该解决方案假设位于 ASPX 文件内,我可以在其中编辑标记。
我将如何以编程方式构建页面,添加表单,设置 runat=server 以便我可以遵循该解决方案并将我的控件添加到表单控件?
你尝试过这样的事情吗?
public static string RenderView(string path)
{
Page pageHolder = new Page();
System.Web.UI.HtmlControls.HtmlForm formHolder = new System.Web.UI.HtmlControls.HtmlForm();
pageHolder.Controls.Add(formHolder );
UserControl viewControl = (UserControl)pageHolder.LoadControl(path);
formHolder.Controls.Add(viewControl);
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, output, false);
return output.ToString();
}
希望这会有所帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)