使用Razor语法调用JavaScript函数
问题描述:
我目前正在研究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;
}
我终于通过数组循环计划,他们举行有关时隙和工程师标识。如果有更多的信息可以提供,我会尽我所能。
答
您将需要使用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
你需要['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
[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