2016-08-10 11 views
0

htmlからC#に簡単な呼び出しを行い、現在の 'Message'を配列に返そうとしています。私は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

その構文は剃刀です。 MVC/Razorを使用していますか? – Liam

+0

[JavaScript変数データをASP.NET変数からどのように与えるのですか?](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コードでDeviceIDを取得するには、javascriptコードでajaxリクエストを作成する必要があります。または、配列を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> 
関連する問題