<%#
est utilisé pour les expressions de liaison de données. Généralement, vous verrez <%# Eval("FieldName") %>
. Si vous essayez d'appeler une méthode définie dans votre code-behind, vous devez utiliser <%= MyFunction("param") %>
Cela étant dit ... vous devriez envisager une approche différente. Il serait préférable de faire quelque chose comme suit (en utilisant votre exemple existant):
<asp:label name="MyLabel" runat="server" />
ainsi que les éléments suivants dans votre code-behind:
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
Cette approche garantit que votre déclaration de l'interface utilisateur ne sait rien des méthodes définies sur votre code-behind, augmentant la maintenabilité globale de votre système.
mmm .. cela ne fonctionne pas. En html, il renvoie la chaîne <% = MyFunction ("param")%> – stighy
@stighy: c'est parce que je n'ai pas remarqué au début que c'est dans la déclaration d'étiquette. Ça ne marchera jamais comme ça. Vous devrez utiliser l'approche que j'ai décrite dans mon édition. – Randolpho
Ok, j'ai résolu .. si j'utilise <%= ...%> à l'intérieur d'un contrôle (étiquette, littéral), il renvoie la chaîne. Mais si vous l'utilisez de manière autonome, sans "lier" la propriété textuelle d'un contrôle, cela fonctionne. Thnks Randolpho! – stighy