ASP .NET - 无法使用Javascript参数从html调用C#方法

时间:2016-08-10 10:35:48

标签: javascript c# html asp.net

我正在尝试从html到C#进行简单的调用,以返回数组中的当前“消息”。我试图从一个javascript方法发送数组中的索引,但它不让我说,“当前上下文中不存在名称'rowID'”。我从this Stack Overflow帖子中了解到,他正在努力传递变量,但对于他来说,没有要插入的参数。所以我仍然坚持同样的问题。这就是我想要做的事情:

var rowID = table.row('.selected').index();
SetSmartWindow(@Model.Messages[rowID].DeviceId, false, false, false, false, false, false);

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法获取所需的值。

将Model.Messages转换为javascript数组。

    var messages = JSON.parse('@Html.Raw(@Model.Messages)');
    var rowID = table.row('.selected').index();
    var deviceId = ''; 
    //write logic here to find the appropriate device id
    SetSmartWindow(deviceId, false, false, false, false, false, false);  

答案 1 :(得分:0)

你根本无法做到这一点。 Razor在服务器端编译和渲染,但javascript正在编译并在客户端工作。您应该在javascript代码中发出ajax请求,以获取javascript代码中的DeviceID。或者你可以在html上打印你的数组,将它分配给一个javascript变量。像这样。

@{
       string arrayStr="";
       foreach (var Message in Model.Messages)
       {
          arrayStr+=Message.DeviceID+ ",";

       }
       arrayStr=arrayStr.Substring(0, arrayStr.Length-1)
}


<script type="javascript">

var deviceIdList = [ @arrayStr ];
var rowID = table.row('.selected').index();
SetSmartWindow(deviceIdList[rowID], false, false, false, false, false, false);

</script>