i ont un bit de code aspx qui utilise Eval pour générer un appel à une fonction javascript:Comment passer plusieurs paramètres à Eval()?
ASP.NET (raisons de lisibilité):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\");") %>'
Text="Do stuff" />
cela génère javascript similaire à:
Javascript (encapsulées de lisibilité):
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301"
);
Note:J'ai converti le généré & quot; références d'entités entre guillemets pour la lisibilité.
j'ai besoin maintenant d'ajouter un paramètre 3nd à l'appel de fonction javascript, une légende:
Javascript (raccourcies pour des raisons de lisibilité)
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301",
"AllisonAngel.jpg"
);
Note:i ai converti le & généré; références d'entités entre guillemets pour la lisibilité.
Il existe déjà une fonction dans le fichier code-behind qui est utilisé pour retourner la légende d'un élément:
C# (code omis pour une meilleure lisibilité):
protected string GetItemText(MySomething item)
{
...
}
Je sais que la fonction ci-dessus peut être appelée à partir du fichier ASPX en utilisant une syntaxe similaire à:
ASP.NET (enveloppé, le code omis, pour une meilleure lisibilité):
<asp:LinkButton ... runat="server"
Text="<%# GetItemText((MySomething)Container.DataItem) %>"
... />
Alors maintenant, je veux utiliser cette fonction pour inclure le 3ème paramètre à la fonction javascript.
A partir de:
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\", \"Todo - Insert caption here\");") %>'
Text="Do stuff" />
je dois changer: "Todo - Insert caption here
"
dans un appel à: <%# GetItemText((MySomething)Container.DataItem) %>
essayant Aveuglément l'évidence:
ASP.NET (enveloppé pour la lisibilité):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
GetItemText((MySomething)Container.DataItem),
"return DoStuff(this, \"{0}\", \"{1}\");") %>'
Text="Do stuff" />
Mais cela se complique puisque Eval() ne prend que deux paramètres.
J'ai essayé un peu moins le obivous:
ASP.NET (encapsulées de lisibilité)
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this,
\"{0}\",
\""+GetItemText((MySomething)Container.DataItem)+"\");") %>'
Text="Do stuff" />
Mais cela ne fonctionne pas non plus.
Questions connexes
ASP.NET: How to access repeater generated elements from javascript?
asp.NET: How to access repeater generated elements?
J'aime mieux cette réponse. Désolé Robert. –