【问题标题】:Create Image and PlaceHolder from code behind - dynamic从后面的代码创建 Image 和 PlaceHolder - 动态
【发布时间】:2012-08-05 09:09:27
【问题描述】:

我想从我的数据库中读取图像,但它们必须在无序列表中。 我有一个 Handler 做得到 imgUrl 的来源

s+= "< ul>";
while (reader.Read())
{
    id = reader.GetInt32(0);
    s += "< li>< div>";
    s += "< a href='#'>< img src='~/Handlers/ShowImage.ashx?id=" + id + "'/>< /a>";
    s += "</ div></ li>";
}
s+="< /ul>";

之后我使用在 aspx 中声明的 Literal 来传递这段 html 代码。

myLiteral.text = s;

问题是:我的处理程序永远不会被执行,所以我永远不会得到 img 源。 为了解决这个问题,我开始使用 PlaceHolder,而不是写标签“”。

所以我有:

while (reader.Read())
{
    id = reader.GetInt32(0);

    PlaceHolder holder = new PlaceHolder();
    Image img = new Image();
    img.ImageUrl = "~/Handlers/ShowImage.ashx?id=" + id;
    holder.Controls.Add(img);

    s += " li div";
    s += " a href='" + reader.GetString(1) + "'" + holder + " /a";
    s += " /div /li";
}

处理程序以这种方式执行,但我的持有者只是传递了.toString() :S

有人帮我吗?而且,这是我想要的最佳方式吗? 谢谢。

【问题讨论】:

    标签: asp.net image dynamic placeholder


    【解决方案1】:

    请尝试....

      StringWriter sw = new StringWriter();
      HtmlTextWriter htw = new HtmlTextWriter(sw);
      holder.RenderControl(htw);
      string s = sw.ToString();
    

    “s”就是你想要的。

    【讨论】:

    • 谢谢,它有效!我从来没有尝试过 HtmlTextWriter 也没有 renderCrontrol!
    • @user1546424,让我知道您对它有什么了解吗?如果可行,请接受此答案。
    • 这是最好的方法吗?我应该使用 Handler 来读取图像吗?
    • 如果数据库或远程服务器中有图片,那么 Handler 是个好方法。
    【解决方案2】:

    你能澄清一下你的问题吗?

    • 当你说你有一个处理程序时……那是一个 HttpHandler 吗?
    • 您的代码在哪里运行?它在您页面的代码隐藏中吗?是什么方法?

    另外,如果你想自己渲染 HTML 字符串,建议你使用 StringBuilder 类,而不是仅仅使用 "s+="

    谢谢!

    【讨论】:

    • 是的,我的 ShowImage 是一个 IHttpHandler。该代码在我的 aspx 文件的代码隐藏中运行
    • 我认为 Amit Prajapati 已经给出了很好的答案:)
    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 2012-03-15
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多