2016-08-10 84 views
0

我試圖做一個從HTML到C#的簡單調用,以返回數組中的當前'消息'。我試圖從javascript方法發送數組中的索引,但它不會讓我說,「名稱'rowID'在當前上下文中不存在」。我從this堆棧溢出帖子瞭解到,他正在努力傳遞變量,但是對於他來說,沒有參數可以插入。所以我仍然堅持同樣的問題。這是我想要做的:ASP .NET - 不能使用JavaScript調用HTML的C#方法參數

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

JS = clientside,C#= serverside。他們不能直接溝通 – Liam

+0

該語法是Razor。你在使用MVC/Razor嗎? – Liam

+0

可能的重複[如何從ASP.NET變量提供JavaScript變量數據?](http://stackoverflow.com/questions/553813/how-do-i-give-javascript-variables-data-from-asp-淨變量) – Liam

回答

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); 
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>