2015-05-27 2 views
1

Мне нужно передать список из моего MVC-контроллера в javascript на мой взгляд. Вот метод в мой контроллерMVC перечислить список в jQuery и извлечь элементы

private void PopulateChart() { 

     var diagramItem = new DiagramPoll(); 
     var diagramList = new List<DiagramPoll>(); 
     diagramItem.Color = "#F7464A"; 
     diagramItem.Label = "System 1"; 
     diagramItem.Value = "10"; 
     diagramList.Add(diagramItem); 

     diagramItem.Color = "##FDB45C"; 
     diagramItem.Label = "System 2"; 
     diagramItem.Value = "20"; 
     diagramList.Add(diagramItem); 

     ViewBag.MyValues = JsonConvert.SerializeObject(diagramList, Formatting.None); 
    } 

И в скрипт-секции в окне просмотра-файла:

<script> 
     $(document).ready(function() {    
      var chartValues = @Html.Raw(ViewBag.MyValues); 
     //This is what I would like to do: 
     foreach (var item in chartValues) { 
       var color = item.Color; 
       var label = item.Label; 
       var value = item.Value 
     } 
     }); 
    </script> 

Мне нужно извлечь переменные выше, чтобы отправить их в качестве входных параметров в jQuery- диаграмма.

Спасибо!

+0

вы получите какой-либо JavaScript или любую другую ошибку? –

ответ

0

Для передачи значений из представления в сценарий необходимо добавить его в кавычки. Измените сценарий как ниже

<script> 
    $(document).ready(function() {    
     var chartValues = '@ViewBag.MyValues'; 

    }); 
</script> 

Кроме того, вы не смогли бы итерацию через него, во-первых, вам нужно будет конвертировать сериализованный объект JSON для правильного объекта JSON.

Что-то вроде этого, а затем запустить foreach над объектом json.

var chartData = $.parseJson(chartValues); 
foreach (var item in chartData) { 
     var color = item.Color; 
     var label = item.Label; 
     var value = item.Value 
} 

Или

var chartData = JSON.parse(chartValues); 

но вам придется конвертировать chartValues ​​наверняка

0

вы можете попробовать что-то вроде этого:

@model IList<WebApplication2.Models.DiagramPoll> 

<script type="text/javascript"> 
$(document).ready(function() {    
    //This is what I would like to do: 
    @foreach (var item in Model) { 
     var color = item.Color; 
     var label = item.Label; 
     var value = item.Value; 
    } 
}); 

public ActionResult About() 
    { 
     var diagramItem = new DiagramPoll(); 
     var diagramList = new List<DiagramPoll>(); 
     diagramItem.Color = "#F7464A"; 
     diagramItem.Label = "System 1"; 
     diagramItem.Value = "10"; 
     diagramList.Add(diagramItem); 

     diagramItem.Color = "##FDB45C"; 
     diagramItem.Label = "System 2"; 
     diagramItem.Value = "20"; 
     diagramList.Add(diagramItem); 

     return View(diagramList); 
    } 
Смежные вопросы