我有一个中继器,它绑定(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/