我想从我的数据库中读取图像,但它们必须在无序列表中。我有一个处理程序确实获取了 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中声明的文字来传递此HTML代码块。
myLiteral.text = s;
问题是:我的处理程序永远不会被执行,所以我永远不会得到 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+="
谢谢!