Assigning the Model to a Javascript variable in Ra

2019-03-13 09:15发布

I have a strongly-typed view bound to an object which contains a Collection (list) of some objects. I know Razor gets executed on the server-side when it's generating the page, whereas Javascript variables don't get instantiated until after the page is displayed... but would it somehow be possible to convert the Model (that the view is bound to) or any of its fields to JSON in Razor without resorting to an AJAX call to fetch that data afterwards?

You know, something like...

var myJavascriptVariable = @Model.MyCollection

where @Model.MyCollection is a list of some objects.

Thanks

2条回答
混吃等死
2楼-- · 2019-03-13 09:56

Try this, with this you can have the unobtrusive javascript:

HTML (Razor):

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

JS (you can user this in external file):

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

查看更多
贼婆χ
3楼-- · 2019-03-13 10:06

To get json data you can use the following construction:

var jsData = @Html.Raw(Json.Encode(Model.MyCollection));
查看更多
登录 后发表回答