I am using Razor in my MVC3 project. And also I\'m using FullCalendar JQuery plugin. So when I\'m trying to fill the array it works good. Except one thing. If s.Name
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))'
You said you already tried MvcHtmlString.Create, but for me, this seems to work correctly for me:
'Trying @MvcHtmlString.Create("Testing'`")'
.
Update:
I took your code '
, put it in browser, copied what showed in there, put it back in Visual Studio, like:
@MvcHtmlString.Create("'")
And it did work, I only got '
back, not '
.
.
Update 2:
This also works:
@{ViewBag.Symbol = "'";}
@MvcHtmlString.Create(ViewBag.Symbol)
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.
HttpUtility.JavaScriptStringEncode
is not really required here.
Simply
'@Html.Raw(s.Name)'
is worked for me.