在Repeater中渲染超链接控件

时间:2010-02-25 02:18:48

标签: c# dictionary repeater render hyperlink

我有一个转发器,它被绑定到一本字典。虽然我可以访问HyperLink,但我无法渲染。我有这段代码:

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

Value.NavigateUrl是一个测试,看看我是否可以访问该属性,我可以。输出是要链接到的超链接的URL。我也试过'Text',这很有用。这意味着它被识别为HyperLink,并且可以作为一个进行访问,但我想将其渲染为一个。我怎么能这样做?

2 个答案:

答案 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控件上......这样可行。

相关问题