访问'mvc'javascript中的数组

本文关键字:数组 mvc 访问 javascript | 更新日期: 2023-09-27 17:52:55

下面是在c# MVC视图中生成数组并试图在javascript函数中访问它的问题。

string[] arrayofdetails = new string[count];

它包含了我想要隐藏的div列表

   <script type="text/javascript">
    for(int x = 0;x < @count; x++)
    {
        $('#@arrayofdetails[x]').hide();
    } 
    </script>

我甚至不知道如果这是可能的,或者如果我的方式偏离基础,javascript新手。

谢谢。

访问'mvc'javascript中的数组

你不能以这种方式与c#和JavaScript交互。我建议如下:将c#数组转换为JSON字符串并将其分配给JavaScript变量;在你的<script>中,把数组解析成一个有效的对象:

<script type="text/javascript">
    //for debugging purpose use two lines
    var jsonArray = '@Html.Raw(Json.Encode(arrayofdetails ))';
    var arryObj = JSON.parse(jsonArray);
    //alternatively, call "JSON.parse()" directly  
    //var arryObj = JSON.parse('@Html.Raw(Json.Encode(arrayofdetails ))');
    for(int x = 0; x < arryObj.length ; x++)
    {
        $('#' + arryObj[x]).hide();
    } 
</script>

注意:由于Json.Encode方法生成一个JSON字符串,属性/数组的值几乎总是双引号(例如"myValue")。像var jsonString = "{ myProperty: "myValue" }";这样的结构在JavaScript中是非法的。因此,生成的JSON字符串必须包装在单引号'中。

如果你需要将Razor与Javascript混合使用

@{
    var arrayofdetails = new []{"one","two","three"};    
}
<div id="content"></div>
<script>
    @foreach (var s in arrayofdetails)
    {                        
        @: console.log('@s');            
        @: document.getElementById("content").innerHTML += '@s <br/>';
    }    
</script>