[WebMethod] public static string GetCustomers(int pageIndex) { Page pageHolder = new Page(); UserControl viewControl = (UserControl)pageHolder.LoadControl("_path_to_customers_usercontrol"); pageHolder.Controls.Add(viewControl); StringWriter output = new StringWriter(); HttpContext.Current.Server.Execute(pageHolder, output, false); return output.ToString(); }
public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context) { using (var writer = new StringWriter()) { Page pageHolder = new Page(); var control = (UserControl)pageHolder.LoadControl("~/foo.ascx"); pageHolder.Controls.Add(control); context.Server.Execute(pageHolder, writer, false); context.Response.ContentType = "text/html"; context.Response.Write(writer.GetStringBuilder().ToString()); } } public bool IsReusable { get { return false; } } }
namespace DynamicLoader { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Ajax { // Add [WebGet] attribute to use HTTP GET [WebGet] [OperationContract] public Stream RenderUC(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, true); //trick to output exactly what you want (without wcf wrapping it) return new MemoryStream(Encoding.UTF8.GetBytes(output.ToString())); } // Add more operations here and mark them with [OperationContract] } }
public void ProcessRequest(HttpContext context) { context.Response.Write(RenderView("~/_controltemplates/15/myDir/Templates/myUC.ascx")); } public static string RenderView(string path) { try { Page pageHolder = new Page(); UserControl viewControl = (UserControl)pageHolder.LoadControl(path); pageHolder.Controls.Add(viewControl); StringWriter result = new StringWriter(); Log.Application.Debug(LOGPREFIX + "RenderView before Execute"); HttpContext.Current.Server.Execute(pageHolder, result, true); return result.ToString(); } catch (Exception ex) { Log.Application.ErrorException(LOGPREFIX, ex); throw; } }