Javascript, Razor and Escape characters. Like apostrophe

后端 未结 5 1777
不知归路
不知归路 2020-12-01 05:08

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

相关标签:
5条回答
  • 2020-12-01 05:28

    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.
    0 讨论(0)
  • 2020-12-01 05:35

    Here is how to do it:

    title: '@Html.Raw(HttpUtility.JavaScriptStringEncode(s.Name))'
    
    0 讨论(0)
  • 2020-12-01 05:38

    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 &#39;, 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 &#39;.

    .

    Update 2:

    This also works:

    @{ViewBag.Symbol = "'";}
    @MvcHtmlString.Create(ViewBag.Symbol)
    
    0 讨论(0)
  • 2020-12-01 05:45

    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.

    0 讨论(0)
  • 2020-12-01 05:45

    HttpUtility.JavaScriptStringEncode is not really required here. Simply

     '@Html.Raw(s.Name)'
    

    is worked for me.

    0 讨论(0)
提交回复
热议问题