2016-08-08 5 views
0

Im ASP-MVC-Controller, ich habe eine ViewBag Variable mit der Liste der Elemente erstellt auf meiner Seite geladen werden:Sonderzeichen in JSON brechen JS

public ActionResult Items() 
    { 
     ViewBag.itemList = Repo.GetItems(); // Returns list of Items 
     return View("Items"); 
    } 

auf der Seite Seite, ich bin Parsen dieser Daten :

@{ 
Newtonsoft.Json.JsonSerializerSettings jsonSettings = new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }; 
var jsonData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, jsonSettings)); 
var serial = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var items = serial.Serialize(ViewBag.itemList); 
} 

In meiner Knockout Ladefunktion, analysiere ich die Liste und Zeilenumbrüche entfernen, die die JSON.parse() Funktion brechen.

Allerdings brechen andere Sonderzeichen gelegentlich die JSON.parse() - Funktion. Gibt es eine Möglichkeit, diese auf der JS-Seite des Controllers herauszufiltern?

+0

check out http://stackoverflow.com/a/7836439/850825 – jessh

+0

Ich habe diesen Beitrag gesehen. Ich habe die Lösung dort getestet, hatte aber Probleme. Wäre es nicht besser, dies auf der Controller-Seite zu tun? – PaulP

+0

Bitte geben Sie ein Beispiel für die Daten, die 'JSON.parse()' brechen. –

Antwort

0

Anstatt Ihren JSON direkt in den HTML-Code der Seite zu schreiben, könnten Sie ihn als Antwort auf eine JavaScript-Anfrage an den Server übergeben.

Wenn Sie jedoch direkt in Ihrem cshtml schreiben möchten, werfen Sie einen Blick auf diesen Beitrag: How do I write unencoded Json to my View using Razor?, der zeigt, wie uncodierte JSON auf die Seite mit einigen der Sonderzeichen gedruckt wird, die keine Probleme verursachen weiter analysieren.

+0

Wenn ich JSON als Antwort übergebe (was ich gerade in anderen Teilen der Projekte mache), stoße ich immer noch auf das Problem, JSON mit ungültigen Zeichen zu analysieren. – PaulP

+0

Und haben Sie versucht, mit '@ Html.Raw (Json.Encode (/ * ... * /))' wie in der Antwort für die Frage, die ich Link gepostet? –