2010-05-28 19 views
1

의 사용 다음과 같은 문제가 발생합니다.Asp.net : <% # 또는 <%

<asp:label runat=server.... text='<%# MyFunction("parameter") %>' /> 

의 MyFunction는 다음과 같이 선언한다 :

protected function MyFunction(par as string) as string 
    if par = "1" then 
    MyFunction="something" 
    else 

    end if 
end function 

을하지만 ASP.NET은 MYFUNCTION을 평가하지 않는 나는 어떤 바인딩하고 다음 구문이있는 ASPX 페이지를했습니다.

내가 잘못 생각하고 있니?

답변

2

<%#은 데이터 바인딩 표현식에 사용됩니다. 일반적으로 <%# Eval("FieldName") %>이 표시됩니다. 코드 숨김에 정의 된 메서드를 호출하려는 경우 <%= MyFunction("param") %>

이렇게 말하면 ... 다른 접근 방법을 고려해야합니다. 그것은 다음과 같이 (기존 예제를 사용하여) 뭔가를 더 좋을 것이다 : 당신의 코드 숨김에서 다음과 함께

<asp:label name="MyLabel" runat="server" /> 

:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    MyLabel.Text = MyFunction("param") 
End Sub 

Protected Function MyFunction(par as string) as string 
    if par = "1" then 
    MyFunction="something" 
    else 

    end if 
End Function 

이 방법은 당신의 UI 선언에 대해 아무것도 알고 보장 코드 숨김으로 정의 된 메소드를 사용하여 시스템의 전반적인 유지 관리 가능성을 높입니다.

+0

음 .. 작동하지 않습니다. html에서는 <% = MyFunction ("param") %> – stighy

+0

@stighy 문자열을 반환합니다. 왜냐하면 처음에는 레이블 선언 안에 있다는 것을 알지 못했기 때문입니다. 그렇게 결코 작동하지 않을 것입니다. 편집에서 설명한 방법을 사용해야합니다. – Randolpho

+0

그래, 내가 해결 했어 .. 만약 내가 <%= ...%> 컨트롤 (레이블, 리터럴) 안에 문자열을 반환합니다. 그러나 컨트롤의 텍스트 속성에 "바인딩"하지 않고 독립 실행 형으로 사용하면 작동합니다. Thnks Randolpho! – stighy