2013-06-14 18 views
7

Sto inviando un modello a una vista con stringhe. Quelle stringhe sono codificate in html e non ho bisogno che siano. Un modo per inviare un modello a una vista senza codifica html?Come ottenere stringhe del modello MVC come testo normale nelle viste

Modello:

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

Controller:

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

Vista:

@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> 

esecuzione delle funzioni sostituzione è una soluzione, ma solo ottenere la stringa senza la codifica sarebbe grande .

risposta

11
@Html.Raw(yourString) 

Questo dovrebbe funzionare:

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

Questa è la risposta corretta per la rimozione della codifica HTML. Tuttavia, il problema si manifesta come se ci fossero troppi "nel testo in chiaro e questo rovina l'inclusione del testo all'interno di" ". Tornando al testo codificato in html e .replace(). – Espen

+1

Perché la risposta rimuove ciò che il la domanda chiede "ottenere la stringa senza la codifica". Trovo che questa sia la risposta più accurata. – Termato

3

Mentre penso che questo è diverso dal mio precedente risposta, sto mettendo qui un altro. 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> 

Spero che questo aiuti .. :)

4

primo luogo è necessario convertire la stringa in Javascript format.
Quindi è necessario impedire a MVC di ricodificarlo come HTML (perché è Javascript, non HTML).

Quindi il codice che serve è:

@using System.Web 

@model Models.Package 

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