Razor MVC 用模型数组填充 Javascript 数组

我正在尝试使用模型中的数组加载JavaScript数组。在我看来,这应该是可能的。

以下两种方法都不起作用。

无法创建 JavaScript 循环并使用 JavaScript 变量通过模型数组递增

for(var j=0; j<255; j++)
{
    jsArray = (@(Model.data[j])));
}

无法创建 Razor 循环,JavaScript 超出范围

@foreach(var d in Model.data)
{
    jsArray = d;
}

我可以让它工作

var jsdata = @Html.Raw(Json.Encode(Model.data)); 

但我不知道为什么我应该使用JSON。

另外,目前我将其限制为255字节。将来,它可能会遇到许多MB。


答案 1

这是可能的,你只需要循环通过剃须刀集合

<script type="text/javascript">

    var myArray = [];

    @foreach (var d in Model.data)
    {
        @:myArray.push("@d");
    }

    alert(myArray);

</script>

答案 2

我正在处理来自C#的Toasts(警报消息)列表,并且需要它在部分视图(文件)中作为Toastr的JavaScript数组。下面的JavaScript代码对我有用:List<Alert>.cshtml

var toasts = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(alerts));
toasts.forEach(function (entry) {
    var command = entry.AlertStyle;
    var message = entry.Message;
    if (command === "danger") { command = "error"; }
    toastr[command](message);
});