2012-04-04 1 views
5

Ich verwende ASP.NET und ich habe eine Zeichenfolge von HTML in der Datenbank.Speichern von Html.Raw() in einer Zeichenfolge in Javascript, ASP.NET MVC 3

Ich möchte das HTML in eine Variable auf dem Client bekommen.

Wenn ich dies tun:

var x = '@Html.Raw(myModel.FishValue)' 

es funktioniert gut, weil es im Wesentlichen ist

var x = '<p>hello!</p>'; 

aber tun, wenn es Anführungszeichen in der html er die Seite bricht.

Meine erste Vermutung wäre, den rohen String .replace entkommen die Anführungszeichen zu verwenden, aber beide .ToString() und .ToHtmlString() (als Html.Raw ein IHtmlString zurückgibt) produziert nicht die gleiche Markup so einfach Html.Raw().

So bin ich bei dem Verlust von dem, was am besten zu tun ist.

Antwort

9

Was ist mit Ersetzen vor dem Aufruf der Html.Raw Methode?

var x = '@Html.Raw(myModel.FishValue.Replace("'","\\'"))' 

UPDATE:

Es könnten auch andere Flucht Zeichen in der Zeichenfolge sein aus dem Modell kommen. Aus diesem Grund würde ich empfehlen, zuerst die Schrägstriche zu ersetzen. Natürlich hängt alles davon ab, was von dem Server in Ihrem Modell kommen könnte.

var x = '@Html.Raw(myModel.FishValue.Replace("\\","\\\\'").Replace("'","\\'"))' 

Eine Probe Schnipsel das Verhalten in der JavaScript darstellen:

//Let's say my Model Content is > I'd Say \ is a escape character. You can't "Escape" 
 
    // YOu would have to replace ' --> \' and \ --> \\ 
 
    var stringFromServer = 'I\'d Say \\ is a escape character. You can\'t "Escape"' 
 
    alert(stringFromServer)

1

Versuchen Sie folgendes:

var x = '@(System.Web.HttpUtility.HtmlEncode(myModel.FishValue))'; 

Wenn Sie den HTML-Code auf dem Client entschlüsseln müssen Seitliche Verwendung

Ich denke, JQuery (nicht sicher, ob Sie es verwenden oder nicht) verarbeitet codierte HTML-Zeichenfolgen, so dass Sie möglicherweise unescape() benötigen.

Verwandte Themen