Wer würde das denken, aber Ich brauche tatsächlich 3 Ebenen von verschachtelten Anführungszeichen in einer ASP.NET WebForms-Seite.Verschachteln von Anführungszeichen in HTML> JavaScript> WebForms oder wie man eine .NET-Methode in einer JavaScript-Methode aufruft
Hier ist, was ich habe:
<img
src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.svg"); %>'
onerror="this.onerror=null; this.src='SwissStyleguide/img/swiss.png';"
alt="Confederatio Helvetica"
/>
nun der erste Teil, eine dynamisch erstellte URL zum src
Attribute zuweisen funktioniert gut. Der Server löst die angegebene spezielle URL auf und erstellt eine absolute Verknüpfung, die der Client abrufen kann.
Aber die onerror
Handler ist komplizierter: Da die src
URL zum PNG-Bild ist bereits in einem Ausdruck mit doppelten Anführungszeichen, kann ich nicht die ASP.NET ResolveClientUrl
Methode aufrufen, die streng doppelte Anführungszeichen für die String-Argument erfordert.
Ich habe versucht, es zu tun, wie folgt aus (funktioniert nicht!)
<img
src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.svg"); %>'
onerror="this.onerror=null; this.src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.png"); %>';"
alt="Confederatio Helvetica"
/>
Aber ohne viel Überraschung, Visual Studio beschwert sich über diese Saite. Die einzige Idee, die mir in den Sinn kommt, ist eine String-Konstante zu verwenden, um die innersten Anführungszeichen zu vermeiden, aber das scheint sehr hässlich zu sein.
Gibt es eine Möglichkeit zu entkommen oder andere oder alle Anführungszeichen anders zu spezifizieren, damit das funktioniert?
Hinweis: Ich weiß über diese Frage: When to use double or single quotes in JavaScript?, aber das Ändern der Anführungszeichen hilft in diesem Fall nicht.
Ja, das würde auch funktionieren. Wie ich jedoch herausgefunden habe, sind die Zitate eigentlich nicht das Problem. – Marcel
Server.MapPath würde auf dem Serversystem einen absoluten Pfad angeben, nicht einen, der vom Client aufgelöst wird. Sie sollten das in Ihrer Antwort ändern. – Marcel