0

我想从我的数据库中读取图像,但它们必须在无序列表中。我有一个 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,而不是写标签“< img ... />”。

所以我有:

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

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

4

2 回答 2

1

请试试....

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

“s”是你想要的。

于 2012-08-08T09:31:49.497 回答
0

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

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

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

谢谢!

于 2012-08-08T10:06:30.003 回答