使用 Viewbag 数据创建一个 Javascript 对象

Create a Javascript object with Viewbag data

我需要创建一个对象以发送到 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 + '"' + '}'
                    }  }]);

你可以这样序列化它。

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

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

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

new FleetSelector("False",array);

数组定义如下:

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