未捕获的语法错误:未终止的模板文字

时间:2018-04-27 09:42:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4

请告诉我这里我做错了什么。我猜这个有些东西但不太确定。

    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]);

1 个答案:

答案 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.SerializeViewBag内容转换为JSON字符串。