Javascript, Razor and Escape characters. Like apostrophe Javascript, Razor and Escape characters. Like apostrophe jquery jquery

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.