Benötigen Sie die Zitate von einer Variablen in MVC-Ansicht zu entkommen als Parameter an JavaScript übergeben

StackOverflow https://stackoverflow.com/questions/1948590

Frage

Ich habe einen Blick MVC, in dem ich habe eine Zeichenfolge Variable JavaScript zu übergeben, aber das String-Variable einfache Anführungszeichen in es (') hat. Ich versuche, so etwas zu tun

<a onclick="JavaScript:AddressHandler.ProcessAddress('<%= homeAddress %>');" 
                            class="button-link">change</a>

homeaddress hat einfache Anführungszeichen, die ich habe irgendwie zu umgehen, so dass ich den kompletten Wert an die JavaScript passieren kann.

War es hilfreich?

Lösung

eine Zeichenfolge zu entkommen ein Javascript Stringliteral zu sein, ersetzen Sie mit doppelten Schrägstrichen Backslash und der String-Begrenzer mit einem Backslash und das Trennzeichen:

<a onclick="AddressHandler.ProcessAddress('<%= homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") %>');" class="button-link">change</a>

. Hinweis: Das javascript: Protokoll verwendet, wenn Sie Skript in einer URL setzen, nicht als Event-Handler

Edit:
Wenn das Skript enthält auch Zeichen, dass Bedarf HTML-Codierung, dass nach der Flucht des Javascript-String getan werden sollte:

<a onclick="<%= Html.Encode("AddressHandler.ProcessAddress('" + homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") +"');") %>" class="button-link">change</a>

Also, wenn Sie nicht wissen, was die Zeichenfolge enthält, um sicher zu sein müssen Sie zuerst die Stringliteral entkommen, dann HTML codieren den Code, so dass es in dem Attribut des HTML-Tags gesetzt werden kann.

Andere Tipps

Sie können die Ajax-Helfer verwenden: Ajax.JavaScriptStringEncode(string strToEncode)

Sie können eine Methode schreiben, die alle einfachen Anführungszeichen entkommen (und andere Zeichen, wenn erforderlich) mit einem umgekehrten Schrägstrich, so dass es von Javascript nicht falsch verstanden wird.

Sie werden als URL zu kodieren homeaddress möchten. MVC ist ein in Helfer gebaut, dies zu tun: UrlHelper.Encode (string url) - es sollte ein einziger ersetzen Zitat mit %27

Ich habe keine Zeit, es zu testen, aber Blick auf HtmlHelper.Encode (string s). Es könnte für Sie die Flucht behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top