访问'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新手。
谢谢。
你不能以这种方式与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>