2014-10-07 208 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