请告诉我这里我做错了什么。我猜这个有些东西但不太确定。
var updateNewSKU = function(make) {
var listItems= "";
for (var i = 0; i < make.length; i++){
listItems += "<option value='" + i + "'>" + i + "</option>";
}
$("select#NewSKU").html(listItems);
}
updateNewSKU(@ViewBag.NewSKUDrop);
在控制台中,我将详细错误视为;
updateNewSKU(System.Collections.Generic.List`1[System.String]);
答案 0 :(得分:1)
由于ViewBag.NewSKUDrop
内容是List<string>
集合,因此您需要使用Json.Encode()
方法将其编码为JSON字符串:
var newSKUDrop = @Html.Raw(Json.Encode(ViewBag.NewSKUDrop));
或JSON.parse()
之后使用@Html.Raw()
方法:
var newSKUDrop = JSON.parse('@Html.Raw(ViewBag.NewSKUDrop)');
然后您可以使用JSON编码列表传递给JS方法:
updateNewSKU(newSKUDrop);
请注意,当ToString()
属性包含ViewBag
时,Razor将执行IEnumerable
,因此传递了类型名称System.Collections.Generic.List<System.String>
。
附录:如果您正在使用NewtonSoft JSON库,请使用JsonConvert.Serialize
将ViewBag
内容转换为JSON字符串。