2010-02-25 4 views
2

리피터가 있는데 사전에 바인딩되어 있습니다. 하이퍼 링크에 액세스 할 수는 있지만 렌더링 할 수는 없습니다. 이 코드를 가지고 :리피터에서 하이퍼 링크 컨트롤 렌더링

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

Value.NavigateUrl 내가 그 속성에 액세스 할 수 있는지 확인하기위한 테스트, 그리고 내가 할 수있는. 출력은 링크 할 하이퍼 링크의 URL입니다. 나는 또한 일한 '텍스트'를 시도했다. 즉, 하이퍼 링크로 인식되어 액세스 할 수 있지만 하나의 렌더링으로하고 싶습니다. 어떻게해야합니까?

답변

1

좀 더 세련된 해결책이있을 수 있지만, 이것은 내가 하이브 링크 컨트롤의 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")) %> 
+0

감사합니다. – Skoder

0

왜 리피터의 리터럴 컨트롤에 넣으려고하지 않습니까?이 방법이 효과적입니다.

+0

내가 리터럴 컨트롤 태그 내에 배치 시도를하고있어 ''System.Web.UI 뒤에 코드에서

.WebControls.Literal '자식 컨트롤을 허용하지 않습니다.'오류가 발생했습니다. – Skoder