2010-05-28 4 views
1

У меня возникла следующая проблема. Я страницу ASPX, без DataBound и следующий синтаксис: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.

Что я буду делать не так?

ответ

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

mmm .. это не работает. В html возвращается строка <% = MyFunction ("param")%> – stighy

+0

@stighy: это потому, что я не заметил сначала, что он находится внутри объявления метки. Это никогда не сработает. Вам придется использовать подход, который я изложил в своем редактировании. – Randolpho

+0

Хорошо, я решил .. если я использую <%= ...%> внутри элемента управления (label, literal), он возвращает строку. Но если использовать его автономно, без «привязки» к текстовому припрету элемента управления, он работает. Thnks Randolpho! – stighy

Смежные вопросы