2

HTMLコードに次の行があります。

<input type="hidden" value="@Model.BgtArray" id="BudgetArray"/>

ここで、BgtArrayは、ビュー自体に入力される2次元配列です。このようなもの:

@for(i=0;i<10;i++)
{@for (j=0;j<10;j++)
   @Model.BgtArray[i][j]= *some value*;
}

jQuery関数でこの配列の要素にアクセスするにはどうすればよいですか?

4

2 に答える 2

3

ビュー内にモデルを設定しています???? MVC パターン ビューでは、渡されたデータをモデルの形式で表示することを目的としています。このモデルを設定するのはコントローラーの責任です。

これが言われていることは、あなたがモデルを持っていると仮定しましょう:

public class MyViewModel
{
    public int[][] BgtArray { get; set; }
}

コントローラー アクション内に入力され、ビューに渡されます。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            BgtArray = Enumerable
                .Range(1, 10)
                .Select(
                    i => Enumerable
                            .Range(1, 10)
                            .Select(j => i * j)
                            .ToArray()
                )
                .ToArray()
        };
        return View(model);
    }
}

次に、対応する強く型付けされたビューを作成して、モデルを JSON シリアル化し、javascript でアクセスできるようにします。

@model MyViewModel
<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
    alert(model.BgtArray[1][2]);
</script>

これは、次のようにブラウザーでレンダリングされます。

<script type="text/javascript">
    var model = {"BgtArray":[[1,2,3],[2,4,6],[3,6,9]]};
    alert(model.BgtArray[1][2]);
</script>

次の行に関する限り:

<input type="hidden" value="@Model.BgtArray" id="BudgetArray"/>

複雑なオブジェクト グラフ全体を隠しフィールドに格納することはできないため、これはほとんど役に立ちません。レンダリングされた結果は次のようになります。

<input type="hidden" value="System.Int32[][]" id="BudgetArray"/>

これは、あなたが達成しようとしているものである可能性はほとんどありません。

于 2012-06-12T06:19:18.553 に答える