我有一个转发器,它被绑定到一本字典。虽然我可以访问HyperLink,但我无法渲染。我有这段代码:
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, HyperLink>)Container.DataItem, "Value.NavigateUrl") %>
Value.NavigateUrl
是一个测试,看看我是否可以访问该属性,我可以。输出是要链接到的超链接的URL。我也试过'Text',这很有用。这意味着它被识别为HyperLink,并且可以作为一个进行访问,但我想将其渲染为一个。我怎么能这样做?
答案 0 :(得分: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();
}
然后从Repeater调用该函数:
<%# RenderLink(DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, HyperLink>)Container.DataItem, "Value")) %>
答案 1 :(得分:0)
为什么不尝试将它放在转发器中的LITERAL控件上......这样可行。