Javascript, Razor and Escape characters. Like apostrophe
I would write your foreach like this:
@foreach (var s in ViewBag.Sessions) { <text> { title: '@HttpUtility.JavaScriptStringEncode(s.Name)', start: new Date(@s.Starts.Year, @s.Starts.Month-1, @s.Starts.Day), end: new Date(@s.Ends.Year, @s.Ends.Month-1, @s.Ends.Day) }, </text> }
HttpUtility.JavaScriptStringEncode
to escape quotes and html markup.<text>
is nicer for multiline output.
Here is how to do it:
title: '@Html.Raw(HttpUtility.JavaScriptStringEncode(s.Name))'
Try like this:
$(function () { $('#calendar').fullCalendar({ header: { left: '', center: 'title', right: 'month,agendaWeek,agendaDay' }, month: 5, year: 2011, editable: false, events: @Html.Raw(new JavaScriptSerializer().Serialize(ViewBag.Sessions)) });});
ViewBag.Sessions
might require some modifications to achieve the desired result (in terms of property names), which brings me to the usual remark I make about ViewBag
when I see someone using it: using ViewBag
is bad practice and I would recommend you using a strongly typed view with a view model.