Визуализация управления гиперссылками в Repeater - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть повторитель, и он связан со словарем. Хотя я могу получить доступ к HyperLink, я не могу отобразить его. У меня есть этот код:

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

Value.NavigateUrl был тестом, чтобы посмотреть, смогу ли я получить доступ к этому свойству, и смогу. Вывод - это URL-адрес гиперссылки для ссылки. Я также попробовал «Текст», который работал. Это означает, что он распознается как HyperLink, и к нему можно обращаться как к одному, но я бы хотел отобразить его как один Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Может быть более элегантное решение, но это то, что я придумал, защищенная функция, которая вызывает метод RenderControl элемента управления Hyperlink.

В вашем коде позади:

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")) %>
0 голосов
/ 25 февраля 2010

Почему бы вам не попытаться поставить его на ЛИТЕРАЛЬНЫЙ элемент управления в репитере ... это будет работать.

...