将int数组从控制器传递到视图中的脚本标签

本文关键字:视图 脚本 标签 数组 int 控制器 | 更新日期: 2023-09-27 18:17:54

我需要将我的int数组传递给脚本标记,然后将值放入for循环中以在视图上使用它们这是我的控制器动作:

 public ActionResult Graph2()
        {
            int[] PostIDArray = { 1, 2, 3, 4, 5, 6, 7, 8 };
            int[] CommentNumberArray = { 1, 2, 3, 4, 5, 6, 7, 8 };
        ViewBag.PostIDArray = PostIDArray;
        ViewBag.CommentNumberArray = CommentNumberArray;
        return View();
    }

下面是我视图中的脚本标签:

<script>                        
            var freqData = [];            
            var PostIDArray = @Html.Raw(Json.Encode(ViewBag.PostIDrray))            
            var CommentNumberArray = @Html.Raw(Json.Encode(ViewBag.CommentNumberArray));
            for (var i = 0; i<8 ; i++) {
                freqData.push({ PostID: PostIDArray[i], Comment: CommentNumberArray[i] });
            }
</script>

我无法从控制器获取值到视图。ViewBag有问题。

将int数组从控制器传递到视图中的脚本标签

试试这样:

<script type='text/javascript'>
    // number array
    var a = [ @(string.Join(", ", (int[])ViewBag.PostIDArray )) ];
    console.log(a);  // [1, 2, 3...]
    var b = [ @(string.Join(", ", (int[])ViewBag.CommentNumberArray )) ];
    console.log(b);  // [1, 2, 3...]
</script>

这个怎么样:

<input type="hidden" value="@ViewBag.PostIDArray" id="PostIDArray" />
<input type="hidden" value="@ViewBag.CommentNumberArray" id="CommentNumberArray" />

和脚本:

<script>
var freqData = [];
var postIDArray = $('#PostIDArray').val().splt(',');
var commentNumberArray = $('#CommentNumberArray').val().split(',');
for (var i = 0; i<8 ; i++) {
   freqData.push({ PostID: postIDArray[i], Comment: commentNumberArray[i] });
}
</script>
   var array = @Html.Raw(Json.Encode(@ViewBag.Array));
   for(var i = 0; i < array.length; i++) 
   {
        freqData[i] = array[i];
   }