2014-10-13 14 views
23

W obiekcie ViewModel, poniżej jest własnością:Jak uzyskać obiekt JSON od obiektu Razor modelu w javascript

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

na uwadze, JavaScript jest następująca:

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. 
    }); 

proszę kierować tutaj, w jaki sposób mogę uzyskać obiekt JSON w javascript.

+0

JavaScript nie wie, co klasa CollegeInformationDTO wygląda. Podczas mojej ostatniej pracy zdefiniowaliśmy obiekt w skrypcie o takiej samej strukturze jak model, a następnie wykonaliśmy mapę jquery .map, aby odwzorować model na obiekt javascript. Upewnij się także, co przekazujesz do widoku jest ciąg JSON –

+0

Musisz serializować swój obiekt Model do JSON. Powinieneś utworzyć metodę (lub właściwość), która zwraca ten wynik. – musefan

+0

Czy możesz podzielić się mną trochę rzeczy, aby to zrobić. tutaj napisałem 'var obj = JSON.stringify ('@ Model.CollegeInformationlist');' tak, powinien przekonwertować obiekt JSON i móc dać wynik, gdy jawnie napiszę właściwość '.State', ale nie działa tak, jak sposób . Wygląda na to, że OBJECT jest konwertowane na typ łańcucha. – dsi

Odpowiedz

59

Można użyć następujących:

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

To byłoby wyjście następujące (nie widząc swój model mam włączone tylko jedno pole):

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

Working Fiddle

+0

Nie mogłem znaleźć odniesienia do JSON, otrzymując komunikat o błędzie: "Nazwa" Json "nie istnieje w bieżącym kontekście ' Jeśli dodaję, 'Newtonsoft.Json. Wtedy nie znaleziono' Encode'. – dsi

+0

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

+0

Dziękuję. Działa idealnie. – dsi

1

jeśli chcesz zrobić obiekt JSON z Yor Modelu wykonaj:

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

lub użyj Json.Net aby json od modelu:

string json = JsonConvert.SerializeObject(person); 
0

w ASP.NET Core IJsonHelper.Serialize() powraca IHtmlContent więc nie trzeba zawinąć go z wezwaniem do Html.Raw().

To powinno być tak proste, jak:

<script> 
    var json = @Json.Serialize(Model.CollegeInformationlist); 
</script> 
Powiązane problemy