Javascript,Razor和Escape字符。像撇号

2020/12/01 00:41 · jquery ·  · 0评论

我在MVC3项目中使用Razor。而且我正在使用FullCalendar JQuery插件。因此,当我尝试填充数组时效果很好。除了一件事。如果s.Name包含撇号,它将呈现出来',这不是我想要的。我尝试使用诸如Encode和Decode甚至MvcHtmlString.Create和result始终相同的不同方法。

这是代码片段:

<head>
    <script type='text/javascript'>
       $(document).ready(function () {        
        $('#calendar').fullCalendar({
            header: {
                left: '',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            month: 5,
            year: 2011,
            editable: false,
            events: [
            @foreach (var s in ViewBag.Sessions)
            {
                @:{
                @: title: '@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)
                @:},
            }
                   ]
        });
    });
</script>

我会这样写你的foreach:

            @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 转义引号和html标记。
  • <text> 对于多行输出更好。

这是操作方法:

title: '@Html.Raw(HttpUtility.JavaScriptStringEncode(s.Name))'

尝试这样:

$(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可能需要进行一些修改才能达到预期的结果(就属性名称而言),这使我想起了ViewBag我看到有人使用它时所做出的通常的评论:使用ViewBag是不正确的做法,建议您使用带有查看模型。

HttpUtility.JavaScriptStringEncode这里不是真正需要的。只是

 '@Html.Raw(s.Name)'

为我工作。

您说您已经尝试过MvcHtmlString.Create,但是对我来说,这似乎对我来说是正确的:

'Trying @MvcHtmlString.Create("Testing'`")'

更新:

我将您的代码&#39;放入浏览器中,复制其中显示的内容,然后将其放回Visual Studio中,例如:

@MvcHtmlString.Create("'")

它确实奏效了,我只'回来了,没有&#39;

更新2:

这也适用:

@{ViewBag.Symbol = "'";}
@MvcHtmlString.Create(ViewBag.Symbol)
本文地址:http://jquery.askforanswer.com/javascriptrazorheescapezifuxiangpiehao.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!