12

我有一个强类型视图绑定到一个对象,该对象包含一些对象的集合(列表)。我知道 Razor 在生成页面时会在服务器端执行,而 Javascript 变量在页面显示之前不会被实例化......但是是否有可能转换模型(视图绑定到) 或它的任何字段到 Razor 中的 JSON 而不诉诸 AJAX 调用来获取该数据之后?

你知道,像...

var myJavascriptVariable = @Model.MyCollection

where@Model.MyCollection是一些对象的列表。

谢谢

4

2 回答 2

37

要获取 json 数据,您可以使用以下构造:

var jsData = @Html.Raw(Json.Encode(Model.MyCollection));
于 2012-11-16T15:37:08.533 回答
4

试试这个,这样你就可以拥有不显眼的javascript:

HTML(剃刀):

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

JS(您可以在外部文件中使用它):

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

例子

HTML:

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

JS​</p>

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

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

​</p>

于 2012-11-16T15:56:25.767 回答