2012-08-08 16 views
0

我想從我的數據庫中讀取圖像,但它們必須位於unorderd列表中。 我有一個處理程序做得到imgUrl的從代碼後面創建圖像和PlaceHolder - 動態

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源。 爲了解決這個問題,我開始使用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

有人幫助,我呢?而且,這是我想要的最好的方式嗎? 謝謝。

回答

1

請嘗試....

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

「S」 就是你想要的。

+0

謝謝,它的工作原理!我從來沒有嘗試HtmlTextWriter既renderCrontrol! – oteal 2012-08-08 10:11:28

+0

@ user1546424,讓我知道你有什麼更多的瞭解它?如果它有效,那麼接受這個答案。 – 2012-08-09 09:19:33

+0

這是做這件事的最好方法嗎?我應該使用Handler來讀取圖像嗎? – oteal 2012-08-09 10:34:49

0

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

  • 當你說你有一個處理程序...是一個HttpHandler?
  • 你的代碼在哪裏運行?它是否在你的頁面的代碼隱藏?它是什麼方法?

另外,如果你想自己渲染HTML字符串,我們建議您使用,而不是僅僅「S + =」

感謝StringBuilder類!

+0

是的,我的ShowImage是一個IHttpHandler。 代碼運行在我的aspx文件代碼隱藏 – oteal 2012-08-09 10:30:21

+0

我認爲Amit Prajapati已經給出了很好的回答:) – mkorman 2012-08-23 14:42:57

相關問題