Визуализация управления гиперссылкой в ​​Repeater

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

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

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


person Skoder    schedule 25.02.2010    source источник


Ответы (2)


Может быть более элегантное решение, но это то, что я придумал, защищенная функция, которая вызывает метод 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")) %>
person wsanville    schedule 25.02.2010

Почему бы вам не попробовать поставить его на БУКВАЛЬНОЕ управление в ретрансляторе... это сработает.

person MRFerocius    schedule 25.02.2010
comment
Я попытался поместить его в буквальный контрольный тег и получил ошибку 'System.Web.UI.WebControls.Literal' does not allow child controls.. - person Skoder; 25.02.2010