使用Viewbag数据创建Javascript对象

时间:2017-03-28 16:48:30

标签: javascript arrays asp.net-mvc viewbag

我需要在javascript中创建一个发送到函数的对象,但这些信息来自我的viewbag。

new FleetSelector("False",
[{"OwnerId": "2df3893d-c406-48fe-8443-1622ddc51af2", "DisplayName": "String 1" }, 
{ "OwnerId": "7A402CD7-5EEA-4AF5-80A3-22EED0610C9D", "DisplayName": "String 2" }]);

在我的viewBag中我有一个Fleets模型列表,它有一个Guid OwnerId和一个String ownerName,这是我尝试的东西,我知道这是错的但不好添加它来尝试解释我希望实现的目标

new FleetSelector("False",
                    [ @foreach (var fleet in ViewBag.Fleets)
                    {
                        '{' + '"' + "OwnerId" + '"' + ':' + '"' + fleet.OwnerId + '"' + ',' + '"' + "DisplayName" + '"' + ':' + '"' + fleet.ownerName + '"' + '}'
                    }  }]);

2 个答案:

答案 0 :(得分:1)

您必须在array对象之外填充FleetSelector

new FleetSelector("False",array);

这是数组定义:

var array=[];
@foreach (var fleet in ViewBag.Fleets)
{
   @:array.push({"OwnerId":@fleet.OwnerId,"DisplayName":@fleet.ownerName});
}

答案 1 :(得分:0)

您可以像这样序列化。

SerializeObject方法返回一个字符串,它是C#对象的json字符串表示形式。

var fleetsArray= @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.Fleets))
console.log(fleetsArray);