次のようにビューバッグにリストを割り当てています。
ViewBag.MyArray = GetSomeIEnumerable();
クライアントでは、ページをレンダリングし、onloadで実行された JS の要素に次のような修正文字列でアクセスできます。
$(document).ready(function () {
var output = "Info: @(ViewBag.MyArray["honka"]["ponka"])";
alert(output);
}
ただし、次のようにインデックスが変数として指定されている場合、要素にアクセスする方法は明確ではありません。
$(document).ready(function () {
var honka = "honka";
var ponka = "ponka";
var output = "Info: @(ViewBag.MyArray[???][???])";
alert(output);
}
バックスラッシュと引用符でエスケープを試みましたが、それをそのまま使用して、他のいくつかのバリアントを使用しましたが、変数がスコープ内で認識されず、閉じる括弧が見つからないなどのエラーが発生するため、構文が正しくないようです。
編集
<td>
@(ViewBag.MyArray[a][b])
</td>
編集
また、CS ファイルと CSHTML ファイルの両方の先頭にusingキーワードを追加しました。
@{
Layout = null;
}
@using TestService.ServiceReference;
@using System.Web.Helpers;
<!DOCTYPE html>
<html>
...