2

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

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

Value.NavigateUrl是一个测试,看看我是否可以访问该属性,我可以。输出是要链接到的超链接的 URL。我还尝试了“文本”,它有效。这意味着它被识别为超链接,并且可以作为一个访问,但我想将它呈现为一个。我怎样才能做到这一点?

4

2 回答 2

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")) %>
于 2010-02-25T02:37:04.917 回答
0

为什么不尝试将它放在转发器中的 LITERAL 控件上……这将起作用。

于 2010-02-25T02:20:41.130 回答