i tienen un poco de código aspx que utiliza Eval para generar una llamada a una función javascript:Cómo pasar múltiples parámetros a Eval()?
ASP.NET (envuelto para facilitar la lectura):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\");") %>'
Text="Do stuff" />
esto genera javascript similar a:
Javascript (ajustado para facilitar la lectura):
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301"
);
Nota:He convertido el generado & quot; entidades referencias a cotizaciones para legibilidad.
Ahora necesito agregar un parámetro de la 3a a la llamada a la función Javascript, una leyenda:
Javascript (ajustado para mejorar la legibilidad)
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301",
"AllisonAngel.jpg"
);
Nota:he convertido generado & quot; entidades referencias a cotizaciones para legibilidad.
ya existe una función en el archivo de código subyacente que se utiliza para devolver el título de un artículo:
C# (código omitido para facilitar la lectura):
protected string GetItemText(MySomething item)
{
...
}
sé que la función anterior se puede llamar desde el archivo aspx usando una sintaxis similar a:
ASP.NET (envuelto, el código se omite, para facilitar la lectura):
<asp:LinkButton ... runat="server"
Text="<%# GetItemText((MySomething)Container.DataItem) %>"
... />
Así que ahora quiero usar esta función para incluir el tercero parámetro a la función de JavaScript.
partir de:
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\", \"Todo - Insert caption here\");") %>'
Text="Do stuff" />
Necesito cambiar: "Todo - Insert caption here
"
en una llamada a: <%# GetItemText((MySomething)Container.DataItem) %>
A ciegas tratando lo obvio:
ASP.NET (envuelto para facilitar la lectura):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
GetItemText((MySomething)Container.DataItem),
"return DoStuff(this, \"{0}\", \"{1}\");") %>'
Text="Do stuff" />
Pero eso se queja, ya que Eval() solo toma dos parámetros.
Probé los poco menos obivous:
ASP.NET (envuelto para facilitar la lectura)
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this,
\"{0}\",
\""+GetItemText((MySomething)Container.DataItem)+"\");") %>'
Text="Do stuff" />
Pero eso no funciona bien.
preguntas relacionadas
ASP.NET: How to access repeater generated elements from javascript?
asp.NET: How to access repeater generated elements?
me gusta más esta respuesta. Lo siento Robert. –