中继器渲染超链接控制

问题描述:

我有一个中继器,它被绑定到字典。虽然我可以访问HyperLink,但我无法渲染一个。我有这样的代码:中继器渲染超链接控制

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

Value.NavigateUrl是一个测试,看看我是否能访问该财产,我可以。输出是要链接到的超链接的URL。我也尝试过“文字”,它工作。这意味着它被认为是一个HyperLink,并且可以作为一个整体进行访问,但是我想将它作为一个整体进行渲染。我怎样才能做到这一点?

可能有一个更优雅的解决方案,但这是我想出的一个保护函数,它调用了超链接控件的方法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

你为什么不试着把它放在继电器上的LITERAL控制器上......这将起作用。

+0

我试图把它放在一个文本控制标记中,并得到了''的System.Web.UI .WebControls.Literal'不允许子控件.'错误。 – Skoder 2010-02-25 02:37:26