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