2010-08-09 4 views
18

일반 텍스트로 출력됩니다 : 오류를asp : hyperlink에 선언적 값을 할당하는 데 문제가 있습니다. 오류 : 이것은 스크립틀릿이 아닙니다. 나는이 작업을 수행하려고

<asp:HyperLink NavigateUrl='<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>' runat="server" Text='<%= GetProfileImage(WebContext.CurrentUser.AccountId) %>'></asp:HyperLink> 

그러나 무엇입니까 :

this is not scriptlet. will output as plain text.

때 내 선언적 문을 통해 I 마우스.

아이디어가 있으십니까? 감사.

답변

18

데이터 바인딩 구문 <%# %>을 사용할 수 있습니다. 하이퍼 링크가 ListView 항목 템플릿과 같은 데이터 바인딩 된 컨트롤이나 코드 숨김에서 컨트롤에 명시 적으로 DataBind()을 호출하는지 확인하십시오.

+2

은 그래서는 "#"은 데이터 바인딩을 명확 의미하고 그리고는 "="는 바인딩을 서버 측 값을 의미하지만 반드시 ? –

+1

그건 맞아. '<%= %>'은 문자열 리터럴을 나타내며 데이터 바인딩과 관련이 없습니다. – kbrimington

22

<%= ... %> 리터럴을 사용하여 서버 쪽 컨트롤의 속성을 설정할 수 없습니다.

대신 다음과 같이 일반 (클라이언트 측) <a> 태그를 사용할 수 있습니다 HTML 태그를 반환을 탈출해야합니다하지 않습니다

<a href="<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>"><%= GetProfileImage(WebContext.CurrentUser.AccountId) %></a> 

GetProfileImage합니다.

2
<a href='<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>'><%= GetProfileImage(WebContext.CurrentUser.AccountId) %></a> 
9

당신은 여전히 ​​< ASP를 채울 수의 HyperLink >을 당신이 IDRUNAT = "서버" 특성을 제공하는 경우. 그런 다음 코드 숨김에서 HyperLink의 속성을 설정할 수 있습니다.

ASP 코드 :

<asp:HyperLink ID="myLink" runat="server"/> 

코드 숨김

public void Page_Init() 
{ 
    myLink.NavigateURL = WebContext.RootUrl + WebContext.CurrentUser.UserName; 
    myLink.Text = GetProfileImage(WebContext.CurrentUser.AccountId); 
}