Отлично, вы только начали использовать MVC и обнаружили первый серьезный недостаток.
Вы не хотите конвертировать его в JSON в представлении, и вы не хотите конвертировать его в контроллере, поскольку ни одно из этих мест не имеет смысла. К сожалению, вы застряли в этой ситуации.
Лучшее, что я нашел, это отправить JSON в представление в ViewModel, например:
var data = somedata;
var viewModel = new ViewModel();
var serializer = new JavaScriptSerializer();
viewModel.JsonData = serializer.Serialize(data);
return View("viewname", viewModel);
затем используйте
<%= Model.JsonData %>
по вашему мнению. Имейте в виду, что стандартный .NET JavaScriptSerializer довольно дерьмовый.
выполнение этого в контроллере, по крайней мере, делает его тестируемым (хотя не совсем так, как описано выше - вы, вероятно, захотите взять ISerializer в качестве зависимости, чтобы вы могли его посмеяться)
Обновление также, что касается вашего JavaScript, было бы неплохо обернуть ВСЕ виджеты JS, которые у вас есть выше, примерно так:
(
// all js here
)();
таким образом, если вы разместите несколько виджетов на странице, вы не получите конфликтов (если только вам не нужен доступ к методам из других мест на странице, но в этом случае вы все равно должны зарегистрировать виджет с некоторой структурой виджетов) , Сейчас это может не быть проблемой, но было бы неплохо добавить скобки сейчас, чтобы сэкономить время, когда это станет требованием, а также хорошая практика OO для инкапсуляции функциональности.