簡體   English   中英

從后面的代碼創建Image和PlaceHolder-動態

[英]Create Image and PlaceHolder from code behind - dynamic

我想從數據庫中讀取圖像,但它們必須位於無序列表的內部。 我有一個處理程序確實獲得了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

誰來幫幫我? 而且,這是我想要的最好方法嗎? 謝謝。

請試試....

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

“ s”就是您想要的。

能否請您澄清一下您的問題?

  • 當您說自己有一個處理程序時...是HttpHandler嗎?
  • 您的代碼在哪里運行? 它在您網頁的代碼后面嗎? 這是什么方法

另外,如果您想自己渲染HTML字符串,建議您使用StringBuilder類,而不只是使用“ s + =”

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM