2012-11-16 15 views
9

Mam mocno napisany widok związany z obiektem, który zawiera kolekcję (listy) niektórych obiektów. Wiem, że Razor jest uruchamiany po stronie serwera podczas generowania strony, podczas gdy zmienne JavaScript nie są tworzone aż do wyświetlenia strony ... ale czy w jakiś sposób będzie możliwe przekonwertowanie Modelu (że widok jest powiązany z) lub dowolne z jego pól do JSON w Razor, bez odwoływania się do wywołania AJAX, aby pobrać te dane później?Przypisywanie modelu do zmiennej JavaScript w Razor

Wiesz, coś jak ...

var myJavascriptVariable = @Model.MyCollection 

gdzie @Model.MyCollection znajduje się lista niektórych obiektów.

Dzięki

+1

Próbowałeś coś takiego 'var modelToJson = @ Html.Raw (JSON. Encode (Model)); '? –

Odpowiedz

29

Aby uzyskać dane json można wykorzystać następującą konstrukcję:

var jsData = @Html.Raw(Json.Encode(Model.MyCollection)); 
+0

Wielkie dzięki za odpowiedzi .... – Scorpio

4

spróbować, z tym można mieć dyskretny javascript:

HTML (Razor):

<script id="data" type="text/data-template"> 
@Html.Raw(Json.Encode(Model.MyCollection)) 
</script> 

JS (można to zrobić w pliku zewnętrznym):

var 
    jsonString = $('#data').html(), 
    jsonValue = (new Function("return(" + jsonString + ");"))(); 

Example

HTML:

<script id="data" type="text/data-template"> 
    { 'name': 'Pedro', 'Age': 33} 
</script> 
<div id="result"></div> 

JS

var 
    jsonString = $('#data').html(), 
    jsonValue = (new Function("return(" + jsonString + ");"))(); 

$('#result').html(jsonValue.name); 

Powiązane problemy