2014-10-07 79 views
4

我目前正在研究ASP.Net MVC應用程序。 從我的數據庫中,我創建了三個字典並將它們存儲在View Model中。使用Razor語法調用JavaScript函數

填充後說,在控制器的一些邏輯的字典,我在我看來,通過@Model

訪問這些字典操縱這些字典後,我需要將數據發送到JS功能有一定的邏輯適用於一個JS庫被稱爲DHtmlxScheduler

我已閱讀關於剃刀語法使用@:和我目前正在使用此方法發送兩個字符串數組。試圖訪問在JS功能,這些陣列時,他們只出現持有System.String[]

下面是代碼:

var weekArray; 
var engArray; 

@foreach(var week in Model.WeeklySchedule) 
{ 
    var key = week.Key; 
    var values = week.Value.ToArray(); 
    var eng = Model.EngineerSchedule.Where(k => k.Key == key).Select(v => v.Value).ToArray(); 
    string test = "hello"; 

    @: gatherTimes('@values', '@eng'); 
} 

function gatherTimes(values, engs) 
{ 
    for(var i = 0; i < values.length; i++) 
    { 
     alert(values[i]); 
    } 

    //alert(values); 
    //alert(engs); 

    //weekArray[weekArray.length] = values; 
    //engArray[engArray.length] = engineers; 
} 

我終於通過數組循環計劃,他們舉行有關時隙和工程師標識。如果有更多的信息可以提供,我會盡我所能。

+2

你需要['Json.Encode'](http://msdn.microsoft.com/en-us /library/system.web.helpers.json.encode(v=vs.111).aspx) – Grundy 2014-10-07 17:15:01

+0

[Convert List to Json Array on client ASP.NET MVC](http://stackoverflow.com/questions/11959770/convert-liststring -json-array-on-client-asp-net-mvc) – Strake 2014-10-07 17:45:00

回答

3

您將需要使用JSON.Encode將列表編碼爲JSON。這裏有一個例子:

@{  
    // C# collection 
    var collection= new List<string> {"A", "B", "C"}; 
} 

<script type="text/javascript"> 
    // encode C# collection to JSON, set to javascript variable 
    var arr = @Html.Raw(Json.Encode(collection)) 
    for(var i = 0; i < arr.length; i++) 
    { 
     console.log(arr[i]); // Output is A B C 
    } 
</script> 

在你的情況下,它會像這樣:

@: gatherTimes('@Html.Raw(Json.Encode(values))', '@Html.Raw(Json.Encode(eng))');  
+0

非常感謝@strake! – 2014-10-07 17:36:44