2010-02-25 126 views
2

我有一箇中繼器,它被綁定到字典。雖然我可以訪問HyperLink,但我無法渲染一個。我有這樣的代碼:中繼器渲染超鏈接控制

<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, HyperLink>)Container.DataItem, "Value.NavigateUrl") %> 

Value.NavigateUrl是一個測試,看看我是否能訪問該財產,我可以。輸出是要鏈接到的超鏈接的URL。我也嘗試過「文字」,它工作。這意味着它被認爲是一個HyperLink,並且可以作爲一個整體進行訪問,但是我想將它作爲一個整體進行渲染。我怎樣才能做到這一點?

回答

1

可能有一個更優雅的解決方案,但這是我想出的一個保護函數,它調用了超鏈接控件的方法RenderControl

在後面的代碼:

using System.IO; 
... 

protected string RenderLink(object h) 
{ 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htmlWriter = new HtmlTextWriter(sw); 
    HyperLink link = (HyperLink)h; 
    link.RenderControl(htmlWriter); 
    return sw.ToString(); 
} 

然後只需調用從中繼該功能:

<%# RenderLink(DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, HyperLink>)Container.DataItem, "Value")) %> 
+0

謝謝,這工作! – Skoder 2010-02-25 02:44:52

0

你爲什麼不試着把它放在繼電器上的LITERAL控制器上......這將起作用。

+0

我試圖把它放在一個文本控制標記中,並得到了''的System.Web.UI .WebControls.Literal'不允許子控件.'錯誤。 – Skoder 2010-02-25 02:37:26