中继器渲染超链接控制
问题描述:
我有一个中继器,它被绑定到字典。虽然我可以访问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")) %>
答
你为什么不试着把它放在继电器上的LITERAL控制器上......这将起作用。
+0
我试图把它放在一个文本控制标记中,并得到了''的System.Web.UI .WebControls.Literal'不允许子控件.'错误。 – Skoder 2010-02-25 02:37:26
谢谢,这工作! – Skoder 2010-02-25 02:44:52