ASP.net code behind generate web user control not passing values

104 Views Asked by At

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?

1

There are 1 best solutions below

0
On

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();
}