2015-06-15 79 views
1

中調用控制器的函數,我在View cshtml頁面中添加了圖形。現在我想讓圖中的值從我的數據庫中退出。 所以我寫在控制器的以下功能:使用d3.js圖形在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#函數。但是,您可以執行的操作是將此函數轉換爲動作,並使用控制器Content()函數格式化xml或json響應。

使用此xml或json可用,您可以進行簡單的js AJAX調用並將數據加載到您的圖形中。

+0

啊好吧,我不知道它。也許你有這樣一個簡單的例子嗎? –

+0

一個例子:http://blog.kurtschindler.net/creating-an-actionresult-that-returns-xml-with-asp-net-mvc/但他們有很多方法來做到這一點 –

1

正如@Remy Grandin所說,你不能直接從JavaScript調用控制器方法。 但是你可以在你的.cshtml頁面調用C#函數。 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 } } 
       ];