0

我正在開發一個.NET MVC 4網絡應用程序,其中包含Google地圖API遍歷javascript中的列表

在這個項目中,我必須在地圖上表示幾個多邊形。我想到的解決方案是在database中創建兩個表格,一個表格爲每個多邊形都有一個標識符,另一個表格保存每個多邊形每個角的經度和緯度。現在我必須將這些多邊形加載到視圖中的地圖上。

我試圖通過加載ViewBag中的列表來完成此操作,並通過一個代表地圖中多邊形的腳本進行查看。我發送給ViewBag的是List<List<string[]>>。 「主」列表中的每個成員都表示一個多邊形,由多個標記組成(List<string[]>)。在string[]中,我保存了每個標記的緯度,經度和描述。

我現在的問題正在經歷這樣的列表Javascript。這甚至有可能嗎?還是有沒有更順利的解決方案,我不打算?

謝謝!

+0

你可以通過使用js:console.log(viewBagData)來記錄你獲得的數據嗎? 我想幫助您,但需要查看以前的數據示例。 – FelProNet 2014-09-22 13:43:59

回答

0

我會做的是在一個對象的數據傳遞到您的視圖,並在您看來,使用@Html.Raw(Json.Encode(polygons))。下面的例子。

C#型號:

public class Polygon { 
    public string Name { get; set; } // name of polygon 
    public List<string> Markers { get; set; } // list of markers 
} 

MVC控制器:

List<Polygon> polygons = ...; // List of Polygons, retrieved from database 

return View(polygons); 

Razor視圖:

@model List<Polygon> 

<script> 
    var polygons = @Html.Raw(Json.Encode(Model)); // will render as var polygons = [ { Name: 'Polygon1', Markers: [ 'marker1', 'marker2' ] }, { Name: 'Polygon2', Markers: [...] } ]; 

    // from @Kosmo's answer 
    polygons.forEach(function(polygon) { 
    console.log('Name is ' + polygon.Name); 
    console.log('Markers are ' + polygon.Markers.join(',')); 
    }); 
</script> 

你到底是什麼了是JSON格式的列表,它是在Controller中創建它時傳入的數據。

+0

謝謝,這工作。 – enriquesroman 2014-09-23 12:22:42

0

你可以做這樣的事情:

<script> 
    var arr = '@YourList`; 

    arr .forEach(function(item) { 
    // whatevery you want here 
    }); 
</script> 
0

是的,如果您將ViewBag值保存在JavaScript的變量中,則已經可以實現。

,你可以這樣做:

<script> 
var myViewBagValue = '@ViewBag.NameOfViewBag'; 

//then you can iterate using one of all those ways that javascript provides 

//every(), filter(), forEach(), map(), some() and etc. 

</script> 

這樣,你的內容將永遠保存在JavaScript值,你可以毫無問題操縱。