Asp.net 从代码隐藏创建图像和占位符-动态

Asp.net 从代码隐藏创建图像和占位符-动态,asp.net,image,dynamic,placeholder,Asp.net,Image,Dynamic,Placeholder,我想从我的数据库中读取图像,但它们必须在无序列表中。 我有一个处理程序可以获取imgUrl的源代码 s+= "< ul>"; while (reader.Read()) { id = reader.GetInt32(0); s += "< li>< div>"; s += "< a href='#'>< img src='~/Handlers/ShowImage.ashx?id=" + id + "'/><

我想从我的数据库中读取图像,但它们必须在无序列表中。 我有一个处理程序可以获取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>";
问题是:我的处理程序从未执行过,因此我从未获得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

有人帮我吗?这是我想要的最好的方式吗? 谢谢。

请尝试

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

“s”是你想要的。

你能澄清一下你的问题吗

  • 当你说你有一个训练员。。。那是HttpHandler吗
  • 你的代码在哪里运行?它在你页面的代码后面吗?这是什么方法
此外,如果您希望自己呈现HTML字符串,建议您使用StringBuilder类,而不是仅使用“s+=”


谢谢

谢谢,它很管用!!我从没试过HtmlTextWriter也没试过renderCrontrol@用户1546424,让我知道你想知道更多吗?如果有效,那么接受这个答案。这是最好的方法吗?我应该使用处理程序来读取图像吗?如果数据库或远程服务器中有图像,那么处理程序是一个好方法。是的,我的ShowImage是一个IHttpHandler。代码在我的aspx文件的代码隐藏中运行我认为Amit Prajapati已经给出了一个非常好的答案:)
  StringWriter sw = new StringWriter();
  HtmlTextWriter htw = new HtmlTextWriter(sw);
  holder.RenderControl(htw);
  string s = sw.ToString();