0

我有一个需要加载自定义网络用户控件的函数,将一些值传递给它,然后获取该控件生成的 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()是一个可靠的函数,可以将值保存到数据库中,这个函数显然没有执行。

我在这里做的一切正确吗?

4

1 回答 1

0

解决了一些问题:

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();
}
于 2017-07-31T16:18:00.963 回答