2012-01-20 11 views
-1

は、ここに私のコードです:jQueryの配列の動的初期化

<script type="text/javascript"> 
    $().ready(function() { 

    @if (myList != null) 
    { 
     foreach (var item in myList) 
     { 
      var months =new object[]; 
      @foreach (item1 in item) 
      { 
       months.push(@item1.name); 
      } 
     } 
    } 
</script> 

しかし、それは数ヶ月がunaccesibleであることを述べています。どうして?

+0

テイクを見て。 com/questions/3556160/razor-view-engine-and-jquery – rjovic

+0

それはまったく有効なJavaScriptではありません。 – Raynos

+0

@Raynosなぜそれを言うのですか? –

答えて

2

は自分に好意を行い、代わりにマークアップとコードを混合のHTMLヘルパーを使用しvar months = [];

+0

@teschfoobar結果はありませんでした。 –

0

var months =new object[];を交換してみてください。例えば。あなたはヘルパーを含むクラスの名前空間をインポートしたら、次のヘルパー

public static string JsArrayDeclaration(this HtmlHelper helper, string name, object[] array) 
{ 
    var sb = new StringBuilder(); 

    sb.AppendFormat("var {0} = [", name); 
    sb.Append(string.Join(",", array)); 
    sb.Append("];"); 
    return sb.ToString(); 
} 

、あなたは簡単にこの構文でカミソリでそれを使用することができます。http:// stackoverflowの本で

@Html.JsArrayDeclaration("months", mylist) 
+0

「ヘルパーを含むクラスの名前空間をインポートする」とはどういう意味ですか?ヘルパーはコントローラ内にあり、コールは適切なビューにあります。 –

+0

私は、単にあなたのビューコードで '@NameNameSpace.Of.My.Helper;'を使うことを意味しました。ヘルパーはコントローラ内には置けません。拡張メソッドなので、静的クラスで宣言する必要があります。 –