2017-03-28 190 views
0

我需要創建一個對象以發送給javascript中的某個功能,但是此信息來自我的viewbag。使用Viewbag數據創建Javascript對象

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

裏面我viewBag我有了一個GUID OWNERID和字符串OWNERNAME一個艦隊的型號列表,這是我嘗試了,我知道這是錯誤的,但生病添加它,試圖解釋什麼,我希望實現

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

回答

1

你必須填充arrayFleetSelector對象。

new FleetSelector("False",array); 

這裏是數組定義:

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

你可以像這樣序列化它。

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

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

我得到這個錯誤'的ObjectContext的實例已設置,並且不能再被用於那些需要connection.' –

+1

取決於你如何設置操作'ViewBag.Fleets'。您可能需要在代碼中使用'ToList()'調用來執行LINQ表達式。 – Shyju