2014-10-13 6 views
23

In Viewmodel-Objekt unter der Eigenschaft:Wie JSON-Objekt von Razor Modell-Objekt erhalten in Javascript

public IList<CollegeInformationDTO> CollegeInformationlist { get; set; } 

In VIEW ist Javascript wie folgt:

var obj = JSON.stringify('@Model.CollegeInformationlist'); 
    alert(obj[1].State); //NOT WORKING, giving string char 

     $.each('@Model.CollegeInformationlist', function (i, item) { 
    var obj = JSON.stringify(item); 
    var r = $.parseJSON(obj); 
    alert(r.State); //just giving undefined. 
    }); 

Bitte führen Sie hier, wie Ich kann JSON-Objekt in Javascript erhalten.

+0

Ihr Javascript nicht weiß, was Ihre CollegeInformationDTO Klasse aussieht. Bei meinem letzten Job haben wir ein Objekt im Skript mit derselben Struktur wie das Modell definiert und dann eine jquery .map erstellt, um das Modell dem JavaScript-Objekt zuzuordnen. Stellen Sie außerdem sicher, dass Sie eine JSON-Zeichenfolge übergeben, die Sie an die Ansicht übergeben. –

+0

Sie müssen Ihr Model-Objekt zu JSON serialisieren. Sie sollten eine Methode (oder Eigenschaft) erstellen, die dieses Ergebnis zurückgibt. – musefan

+0

Kannst du mir bitte ein paar Sachen dafür geben? hier schrieb ich 'var obj = JSON.stringify ('@ Model.CollegeInformationlist');' so sollte es in JSON-Objekt konvertieren und in der Lage sein, ein Ergebnis zu geben, wenn explizit '.State' -Eigenschaft geschrieben wird, aber es funktioniert nicht wie ein Weg . Es sieht so aus, OBJECT wird in String-Typ konvertiert. – dsi

Antwort

59

Sie können die folgenden Befehle verwenden:

var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist)); 

Dies würde die Ausgabe die folgenden (ohne Ihr Modell zu sehen, ich habe enthalten nur ein Feld):

<script> 
    var json = [{"State":"a state"}]; 
</script> 

Working Fiddle

+0

Ich konnte die JSON-Referenz nicht finden und bekam einen Fehler, da 'Der Name 'Json' im aktuellen Kontext nicht existiert. ' Wenn ich 'Newtonsoft.Json.' hinzufüge, dann wird 'Encode' nicht gefunden. – dsi

+0

@dhaval http://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode(v=vs.111).aspx – hutchonoid

+0

Vielen Dank. Es funktioniert perfekt. – dsi

1

Wenn Sie Willst du JSON-Objekt von deinem Modell machen:

foreach (var item in Persons) 
    { 
    var jsonObj=["FirstName":"@item.FirstName"] 
    } 

oder verwenden Sie Json.Net json aus dem Modell zu machen:

string json = JsonConvert.SerializeObject(person); 
0

In ASP.NET-Core die IJsonHelper.Serialize() kehrt IHtmlContent so brauchen Sie es nicht mit einem Aufruf an Html.Raw() zu wickeln.

Es sollte so einfach sein wie:

<script> 
    var json = @Json.Serialize(Model.CollegeInformationlist); 
</script> 
Verwandte Themen