【问题标题】:Call JavaScript function with Razor syntax使用 Razor 语法调用 JavaScript 函数
【发布时间】:2014-12-02 04:50:49
【问题描述】:

我目前正在开发一个 ASP.Net MVC 应用程序。 从我的数据库中,我创建了三个字典并将它们存储在一个视图模型中。

在控制器中使用一些逻辑填充所述字典后,我正在通过@Model在我的视图中访问这些字典

处理完这些字典后,我需要将数据发送到一个 JS 函数,以将一些逻辑应用到一个名为 DHtmlxScheduler 的 JS 库中

我已经阅读了使用 @: 的 Razor 语法,目前正在使用此方法发送两个字符串数组。当试图在 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;
}

我最终计划遍历数组,它们保存有关时隙和工程师 ID 的信息。如果我可以提供更多信息,我会尽力提供。

【问题讨论】:

标签: javascript c# asp.net-mvc razor


【解决方案1】:

您需要使用 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))');    

【讨论】:

  • 非常感谢@strake!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
相关资源
最近更新 更多