2013-06-14 18 views
7

Wysyłam model do widoku, który ma ciągi. Te ciągi są kodowane w html i nie potrzebuję ich. Jakikolwiek sposób na wysłanie modelu do widoku bez kodowania html?Jak uzyskać ciągi znaków MVC jako zwykły tekst w widokach

Model:

public class Package 
{ 
    public string String { get; set; } 
} 

Kontroler:

public ActionResult GetPackage() 
{ 
    Package oPackage = new Package(); 
    oPackage.String = "using lots of \" and ' in this string"; 
    return View(oPackage); 
} 

Widok:

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     // Here @Model.String has lots of &#39; and &quot; 
     var String = "@Model.String".replace(/&#39;/g, "'").replace(/&quot;/g, "\""); 
     // Here String looks ok because I run the two replace functions. But it is possible to just get the string clean into the view? 
    })(); 
</script> 

Uruchamianie funkcji zastąpić to rozwiązanie, ale dopiero się ciąg bez kodowania byłoby świetnie .

Odpowiedz

11
@Html.Raw(yourString) 

To powinno działać:

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     var String = "@Html.Raw(Model.String)"; 
})(); 
</script> 
+0

To jest poprawna odpowiedź na usuwanie kodowanie html. Problem jednak pokazuje, że obecnie jest zbyt wiele "w zwykłym tekście, a to wkracza w otaczający tekst" ". Powrót do tekstu zakodowanego w html i .replace(). – Espen

+1

Ponieważ odpowiedź usuwa to, co pytanie prosi o "pobranie ciągu bez kodowania". Uważam, że jest to najdokładniejsza odpowiedź. – Termato

3

Jak myślę, że to jest inny niż mój poprzedni odpowiedź, kładę tutaj jeszcze jednego. System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true);

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     var String = "@System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true)"; 
})(); 
</script> 

Nadzieja to pomaga .. :)

4

Po pierwsze trzeba przekonwertować ciąg do Javascript format.
Następnie należy uniemożliwić MVC ponowne kodowanie go jako HTML (ponieważ jest to JavaScript, a nie HTML).

Więc kod czego potrzebujesz to:

@using System.Web 

@model Models.Package 

<script type="text/javascript"> 
    var s = "@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString, addDoubleQuotes: false))"; 
</script> 
Powiązane problemy