Код ASP.net создает пользовательский веб-элемент управления, не передавая значения

У меня есть функция, которая должна загрузить пользовательский веб-элемент управления, передать ему некоторые значения, а затем взять HTML-код, сгенерированный этим элементом управления.

У меня есть код:

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

HTML-код, который я получаю, - это HTML-код, который я ожидал бы, если бы в элемент управления не были переданы значения. В самом контроле, если я делаю:

protected void Page_Load(object sender, EventArgs e)
{
    Width.ToString().Log();

куда Log() является надежной функцией, которая сохраняет значение в базе данных, эта функция, очевидно, не выполняется.

Я все здесь правильно делаю?

1 ответ

Решено немного поиграться:

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();
}
Другие вопросы по тегам