Dreifache Zitate?Wie trenne ich einen datengebundenen Javascript-String-Parameter in ASP.NET?
-
08-06-2019 - |
Frage
Wie trenne ich einen an Javascript-Daten gebundenen Zeichenfolgenparameter in einem Anker ab? OnClick
Ereignis?
- Ich habe ein Ankertag in einem ASP.NET Repeater-Steuerelement.
- Der
OnClick
Das Ereignis des Ankers enthält einen Aufruf einer Javascript-Funktion. - Die Javascript-Funktion benötigt einen String als Eingabeparameter.
- Der String-Parameter wird mit einem datengebundenen Wert vom Repeater gefüllt.
Ich brauche die „doppelten Anführungszeichen“ dafür Container.DataItem
.
Ich brauche die „einfachen Anführungszeichen“ für die OnClick
.
Und ich brauche es immer noch noch ein Trennzeichen (dreifache Anführungszeichen?) für den Eingabezeichenfolgenparameter des Javascript-Funktionsaufrufs.
Da ich keine einfachen Anführungszeichen mehr verwenden kann, wie stelle ich sicher, dass die Javascript-Funktion weiß, dass der Eingabeparameter eine Zeichenfolge und keine Ganzzahl ist?
Ohne die zusätzlichen Anführungszeichen um den Eingabezeichenfolgenparameter geht die Javascript-Funktion davon aus, dass ich eine Ganzzahl übergebe.
Der Anker:
<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>
und hier ist das 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>
Lösung
Ich hatte kürzlich ein ähnliches Problem und die einzige Möglichkeit, es zu lösen, bestand darin, einfache alte HTML-Codes für einzelne ('
) und doppelte Anführungszeichen ("
).
Der Quellcode war natürlich völlig durcheinander, aber es hat funktioniert.
Versuchen
<a id="aShowHide" onclick='ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode") %>");'>Show/Hide</a>
oder
<a id="aShowHide" onclick='ToggleDisplay('<%# DataBinder.Eval(Container.DataItem, "JobCode") %>');'>Show/Hide</a>
Andere Tipps
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '
Verwendung wie oben.
Ohne die zusätzlichen Anführungszeichen um den Eingabezeichenfolgenparameter geht die Javascript-Funktion davon aus, dass ich eine Ganzzahl übergebe.
Können Sie eine rudimentäre String-Funktion ausführen, um JavaScript dazu zu zwingen, sie in einen String umzuwandeln?Wie
value = value + ""
Versuchen Sie, den zusätzlichen Text in den serverseitigen Skriptblock einzufügen und zu verketten.
onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>'
Bearbeiten:Ich bin mir ziemlich sicher, dass Sie auch außerhalb des Skriptblocks doppelte Anführungszeichen verwenden könnten.
Übergabe einer Variablen an die Funktion ohne einfache oder doppelte Anführungszeichen
<html>
<head>
</head>
<body>
<script language="javascript">
function hello(id, bu)
{
alert(id+ bu);
}
</script>
<a href ="javascript:
var x = "12";
var y = "fmo";
hello(x,y)">test</a>
</body>
</html>