Triple Cita? ¿Cómo delimito un parámetro de cadena Javascript de base de datos en ASP.NET?


¿Cómo delimito un parámetro de cadena de base de datos Javascript en un evento anchor OnClick?

  • Tengo una etiqueta de anclaje en un ASP.NET Control del repetidor.
  • El evento OnClick del ancla contiene una llamada a una función Javascript.
  • La función Javascript toma una cadena para su parámetro de entrada.
  • El parámetro string se rellena con un valor de base de datos del Repetidor.

Necesito las "comillas dobles" para el Container.DataItem.
Necesito el 'single cotizaciones ' para el OnClick.

Y todavía necesito un delimitador más (¿comillas triples?) para el parámetro de cadena de entrada de la llamada a la función Javascript.

Dado que no puedo usar 'comillas simples' de nuevo, ¿cómo me aseguro de que la función Javascript sepa que el parámetro de entrada es una cadena y no un entero?

Sin las comillas adicionales alrededor del parámetro de cadena de entrada, la función Javascript piensa que estoy pasando un entero.

El ancla:

<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>    

Y aquí está el Javascript:

<script language="JavaScript" type="text/javascript">
/* Shows/Hides the Jobs Div */
function ToggleDisplay(jobCode)
{
    /* Each div has its ID set dynamically ('d' plus the JobCode) */
    var elem = document.getElementById('d' + jobCode);

    if (elem) 
    {
        if (elem.style.display != 'block') 
        {
            elem.style.display = 'block';
            elem.style.visibility = 'visible';
        } 
        else
        {
            elem.style.display = 'none';
            elem.style.visibility = 'hidden';
        }
    }
}
</script>
Author: Ivan, 2008-08-05

5 answers

Recientemente tuve un problema similar y la única manera de resolverlo era usar códigos HTML antiguos para comillas simples (&#39;) y dobles (&#34;).

El código fuente era un desastre total, por supuesto, pero funcionó.

Intenta

<a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a>

O

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a>
 23
Author: lubos hasko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-17 22:14:03
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '

Use como arriba.

 5
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-21 01:46:14

Sin las comillas adicionales alrededor del parámetro de cadena de entrada, la función Javascript piensa que estoy pasando un entero.

¿Puede hacer alguna función de cadena rudimentaria para forzar a JavaScript a cambiarla en una cadena? Como

value = value + ""
 2
Author: Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-05 04:08:18

Intente poner el texto extra dentro del bloque de script del lado del servidor y concatenar.

onclick='<%# "ToggleDisplay(""" &  DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>'

Edit: Estoy bastante seguro de que también podrías usar comillas dobles fuera del bloque de script.

 0
Author: Shawn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-05 04:19:36

Pasando variable a función sin comillas simples o comillas dobles

<html>
    <head>
    </head>
    <body>
        <script language="javascript">
        function hello(id, bu)
        {
            alert(id+ bu);
        }
        </script>
        <a href ="javascript:
            var x = &#34;12&#34;;
            var y = &#34;fmo&#34;;
            hello(x,y)">test</a>
    </body>
</html>
 0
Author: Dez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-22 16:52:37