1

コントローラによってViewBagに配置された文字列配列の内容をjavascriptで反復しようとしています。

コントローラ内:

ViewBag.Addresses = new string[] {"a", "b", "c"};

そして、ビューで:

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {

        var array = How do I get "a", "b" and "c" here?;
        for (var i = 0; i < array.length; i++) {
            doSomething(array[i]);
        }
    }

</script>

私は答えをたくさん探しましたが、かみそりのビューエンジンだけの解決策を見つけたようです。Webフォームはどうですか?

4

1 に答える 1

2

あなたの見解では

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {

        var array = <%= Html.Raw(ViewBag.Addresses)%>;
            for (var i = 0; i < array.length; i++) {
                document.write(array[i]);
            }
        }
</script>

次に、コントローラー内から:

JavaScriptSerializer js = new JavaScriptSerializer();
//serializes array into json

ViewBag.Addresses = js.Serialize(new[] { "a", "b", "c" });

個人的には、ビューモデルを作成し、配列をビューモデルのプロパティにシリアル化してから、ビューでこれを実行することを検討します。

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {

        var array = <%= Html.Raw(Model.Addresses)%>;
            for (var i = 0; i < array.length; i++) {
                document.write(array[i]);
            }
        }
</script>
于 2012-08-21T08:52:21.380 に答える