私はこのコードを持っています:
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を設定して、そのソリューションに従い、フォームコントロールにコントロールを追加するにはどうすればよいですか?