c# - 在 Repeater 中渲染超链接控件

标签 c# dictionary repeater render hyperlink

我有一个中继器,它绑定(bind)到一个字典。虽然我可以访问 HyperLink,但我无法渲染。我有这段代码:

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

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

最佳答案

可能有一个更优雅的解决方案,但这是我想到的,一个调用 Hyperlink 控件的 RenderControl 方法的 protected 函数。

在你后面的代码中:

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")) %>

关于c# - 在 Repeater 中渲染超链接控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331137/

相关文章:

c# - 在其构造函数中从 session 中设置项目的模拟对象

c# - 从另一个 WPF 窗体打开一个新的 WPF 窗体

python - 使用 zip 或列表理解在 python 中创建字典是否更有效?

python - Python 中的 dict() 问题,TypeError :'tuple' 对象不可调用

javascript - 如何更换当前的 Angular 转发器

c# - 在转发器内的 Web 窗体中查找控件

C# 动态添加按钮并用它发送事件参数

C# 9.0 With 表达式。如何使用它们?

用于从嵌套的 Python 对象(字典)创建 TreeMap 的 Python 库

c# - 在中继器中搜索 ImageButton