last day (15 days later) » 

11:01 AM
0
Q: Ошибка в синтаксисе Razor

АндрейИзучаю mvc. Пишу с помощью javascripta функцию ан странице и пытаюсь внедрить туда c# код. Вот что получается: @section scripts { <script> var arr = @JsonConvert.SerializeObject(@ViewData["pieData"] as List<PieSeriesData>); var timeReload = 3; var timenow = 0; ...

 
Cемиколон после тела цикла зачем нужен? В скобках @(...) подразумевается C#, который смущается от такой внезапной конструкции. Без скобок это будет рендериться в js, который пустые операторы как раз одобряет.
 
@free_ze это случайно затесалось. Без него такая же ошибка.
 
Ошибка оттого, что @(...) должно возвращать строковое значение.
 
@free_ze я пробовал делать это и вне секции скрипта делать, там тоже такая же ошибка со скобками, а без них работает.
@free_ze то есть там обязательно должен быть return?
 
Считайте, что return там уже неявно есть. Должна быть строковая переменная, литерал или выражение, результат которого приводим к string.
Вот раздел документации об этой штуке.
 
11:01 AM
@free_ze получается я не могу на странице создать переменную? Или могу но только типа string?
@free_ze просто мне нужно взять массив который я передаю во вью дате и работать с ним в цикле javascript делая с ним то что мне нужно по таймеру. Вот и немного не получается.
 
Выполнять произвольный C#-код без его непосредственного рендеринга можно в фигурных скобках - @{...}
C#-циклы работают только на этапе препроцессинга на сервере, с таймером на клиенте им уже не получится взаимодействовать. Отрендерите свой массив в js (var myJsArray = @Json.Serialize(Model.MyArrayProp);) и работайте с ним уже средствами js.
 
@free_ze а для этого метода нужно что то подключать? Какие нибудь библиотеки? Или нет? Просто у меня у класса Json нет такого метода.
 
Хм. Видимо, в MVC такого нет, а в Core есть свой встроенный форматтер. Тогда подключите этот пакет, он крайне популярен и так же прост в работе, наверняка еще не раз пригодится.
 
@free_ze я загуглил, в нагете этот пакет называется Newtonsoft.Json и он по стандарту подключён к проекту.
@free_ze да и в описании этой библиотеки я во только такой вариант нашёл string json = JsonConvert.SerializeObject(product); Это на шарпе а что бы такой же метод был в js я такого не нашёл и почему то у меня так не работает как вы пишите.
@free_ze что нибудь можете подсказать? Как добиться того что бы был этот метод? Потому что newtonsoftjson подключен к проекту.
 
using сделать при необходимости. Убедитесь, что код из примера сериализации на их сайте у вас работает.
 
11:01 AM
@free_ze сделал юзинг @using System.Web.Script.Serialization; не получается такой вариант как вы написали. А их вариант он не получается если его делать в разрезе javascript кода. Только в контроллере.
 
Зачем это? Вам нужен Newtonsoft и тот код, который у них в примерах. Это другая библиотека, хотя и работает похожим образом
 
@free_ze уже нашёл, а почему не работает такой пример кода как вы написали?
@free_ze сделал так как на сайте. Вылетела ошибка javascripta. Мой код и ошибка в вопросе.
 
Посмотрите, что в результате срендерилось.
 
@free_ze там первой строкой после кода ошибка, а дальше портянка кода в которую он превратил строчкеу серриализации.
@free_ze если что этот класс что используется в списке представляет из себя чарт. Ну график вообщем.
 
выглядит внешне нормально. Что за & он имеет в виду?
 
11:01 AM
@free_ze написано Diagramm:60 я так понимаю 60 элемент в строке.
В чём может быть проблема?
 
@Андрей Возможно, библиотека ожидает каких-то других данных.
 
@free_ze каких?
Просто я хочу сделать круговую диаграмму. И поочереди что бы раз например в 3 секунды выбирались разные доли. На сервере я такого не сделаю, поэтому только на клиенте, вот теперь думаю как это сделать
 
@Андрей, без понятия) Я вам помог лишь массив сериализовать в js
 
Не серриализовался в итоге :( но спасибо за подсказки.
 

last day (15 days later) »