我正在尝试从html到C#进行简单的调用,以返回数组中的当前“消息”。我试图从一个javascript方法发送数组中的索引,但它不让我说,“当前上下文中不存在名称'rowID'”。我从this Stack Overflow帖子中了解到,他正在努力传递变量,但对于他来说,没有要插入的参数。所以我仍然坚持同样的问题。这就是我想要做的事情:
var rowID = table.row('.selected').index();
SetSmartWindow(@Model.Messages[rowID].DeviceId, false, false, false, false, false, false);
答案 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>