在 Repeater 中渲染超链接控件

发布于 2024-08-22 11:03:56 字数 362 浏览 5 评论 0原文

我有一个复读机,它与一本字典绑定在一起。虽然我可以访问超链接,但无法渲染超链接。我有这样的代码:

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

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

I've got a repeater and it is bound to a dictionary . Although I can access the HyperLink, I can't render one. I have this code:

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

The Value.NavigateUrl was a test to see if I could access that property, and I can. The output is the URL the hyperlink to link to. I also tried 'Text', which worked. This means that it's recognized as a HyperLink, and can be accessed as one, but I would like to render it as one. How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

☆獨立☆ 2024-08-29 11:03:56

可能有一个更优雅的解决方案,但这就是我想出的,一个调用 Hyperlink 控件的 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")) %>

There may be a more elegant solution, but this is what I came up with, a protected function that calls the RenderControl method of the Hyperlink control.

In your code behind:

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();
}

Then just call that function from your Repeater:

<%# RenderLink(DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, HyperLink>)Container.DataItem, "Value")) %>
鹤舞 2024-08-29 11:03:56

为什么不尝试将其放在中继器中的文字控件上......这会起作用。

Why don't you try to put it on a LITERAL control in the repeater... this will work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文