2015-06-15 2 views
1

с использованием графиков d3.js, я добавил график на странице просмотра cshtml. теперь я хочу, чтобы значения в графе выходили из моей БД. поэтому я написал следующую функцию в контроллере:функция вызова из контроллера в код javascript

protected int GetReadinessAvg() 
    { 
     var avgReadiness = 0; 
     var countItems = 0; 
     foreach (var item in db.Reviews) 
     { 
      avgReadiness = avgReadiness + item.LecturerReadine; 
      countItems++; 
     } 
     avgReadiness = avgReadiness/countItems; 

     return avgReadiness; 
    } 

Эта функция отлично работает и действительно вернуть соответствующее значение. Теперь, на графике (код Js), я хочу использовать это значение. Вот что я пытаюсь сделать ..

var freqData = [ 
       { State: '2013', freq: { LecturerReadine: '<%=GetReadinessAvg()%>', LecturerTransferRate: 412, LecturerAttitude: 674, LecturerKnowledge: 2001 } } 
       , { State: '2014', freq: { LecturerReadine: 932, LecturerTransferRate: 2149, LecturerAttitude: 418, LecturerKnowledge: 4726 } } 
       , { State: '2015', freq: { LecturerReadine: 832, LecturerTransferRate: 1152, LecturerAttitude: 1862, LecturerKnowledge: 2135 } } 
       ]; 

Но вызове функции: LecturerReadine: '<% = GetReadinessAvg()%>' не работает. Какие-либо предложения?

ответ

0

В ASP MVC вы не можете напрямую вызвать функцию C#. Однако вы можете преобразовать эту функцию в качестве действия и отформатировать ответ xml или json с помощью функции контроллера Content().

С помощью этого xml или json вы можете сделать простой вызов js AJAX и загрузить данные на свой график.

+0

ahh ok, я этого не знал. может быть, у вас есть простой пример этого? –

+0

Пример: http://blog.kurtschindler.net/creating-an-actionresult-that-returns-xml-with-asp-net-mvc/, но у них есть много способов сделать это –

1

Как сказал @Remy Grandin, вы не можете напрямую вызвать метод контроллера из JavaScript. Но вы можете вызвать функцию C# на странице .cshtml. Use @functions {..}

@functions{ 

protected int GetReadinessAvg() 
    { 
     var avgReadiness = 0; 
     var countItems = 0; 
     foreach (var item in db.Reviews) 
     { 
      avgReadiness = avgReadiness + item.LecturerReadine; 
      countItems++; 
     } 
     avgReadiness = avgReadiness/countItems; 

     return avgReadiness; 
    } 

} 

затем назначить значение.

var freqData = [ 
       { State: '2013', freq: { LecturerReadine: '@GetReadinessAvg()', LecturerTransferRate: 412, LecturerAttitude: 674, LecturerKnowledge: 2001 } } 
       , { State: '2014', freq: { LecturerReadine: 932, LecturerTransferRate: 2149, LecturerAttitude: 418, LecturerKnowledge: 4726 } } 
       , { State: '2015', freq: { LecturerReadine: 832, LecturerTransferRate: 1152, LecturerAttitude: 1862, LecturerKnowledge: 2135 } } 
       ]; 
Смежные вопросы