Reputation: 61727
I have a function that needs to load a custom webuser control, pass some values to it then take the HTML generated by this control.
I have the code:
string renderedControl;
{
var page = HttpContext.Current.Handler as Page;
var ctrl = (ResponsiveImageFixedSize)page.LoadControl("~/PageControls/ResponsiveImageFixedSize/ResponsiveImageFixedSize.ascx");
ctrl.Width = 600;
ctrl.UploadedImage = upload;
var sb = new StringBuilder();
var tw = new StringWriter(sb);
var hw = new HtmlTextWriter(tw);
ctrl.RenderControl(hw);
renderedControl = sb.ToString();
}
The HTML I get back is the HTML I would expect if no values had been passed to the control. In the control itself, if I do:
protected void Page_Load(object sender, EventArgs e)
{
Width.ToString().Log();
Where Log()
is a reliable function that saves a value to a database, this function is apparently not executed.
Am I doing everything correctly here?
Upvotes: 0
Views: 94
Reputation: 61727
Solved with a bit of playing around:
string renderedControl;
{
var page = new Page();
var ctrl = (ResponsiveImageFixedSize)page.LoadControl("~/PageControls/ResponsiveImageFixedSize/ResponsiveImageFixedSize.ascx");
ctrl.Width = 600;
ctrl.UploadedImage = upload;
ctrl.OriginalImagePath = originalImagePath;
ctrl.Alt = alt;
page.Controls.Add(ctrl);
var sw = new StringWriter();
HttpContext.Current.Server.Execute(page, sw, false);
renderedControl = sw.ToString();
}
Upvotes: 0