Uncaught Syntax Error: неопределенный литерал шаблона - PullRequest
0 голосов
/ 27 апреля 2018

Пожалуйста, дайте мне, что я делаю не так здесь. Я догадываюсь об этом, но не совсем уверен.

    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 голосов
/ 27 апреля 2018

Поскольку содержимое ViewBag.NewSKUDrop является коллекцией List<string>, необходимо кодировать его в строку JSON, используя метод Json.Encode():

var newSKUDrop = @Html.Raw(Json.Encode(ViewBag.NewSKUDrop));

Или используйте JSON.parse() метод после @Html.Raw():

var newSKUDrop = JSON.parse('@Html.Raw(ViewBag.NewSKUDrop)');

Затем вы можете использовать JSON-кодированный список для перехода в метод JS:

updateNewSKU(newSKUDrop);

Обратите внимание, что Razor выполнит ToString(), когда свойство ViewBag содержит IEnumerable, поэтому вместо него передается имя типа System.Collections.Generic.List<System.String>.

Приложение: Если вы используете библиотеку JSON NewtonSoft, используйте JsonConvert.Serialize для преобразования содержимого ViewBag в строку JSON.

...