Javascript,剃刀和逃生字符。 像撇号一样
我在我的MVC3项目中使用Razor。 而且我正在使用FullCalendar JQuery插件。 所以当我试图填充arrays它的作品很好。 除了一件事。 如果s.Name包含撇号,则会呈现像'
这不是我想要的。 我试图使用不同的方法,如编码和解码,甚至MvcHtmlString.Create和结果总是相同的。
这里是代码片段:
<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: '@Html.Raw(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> }
-
Html.Raw
跳过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
的常见说法:使用ViewBag
是不好的做法,我build议您使用用视图模型强types化视图。
你说你已经试过MvcHtmlString.Create,但对我来说,这似乎对我来说是正确的:
'Trying @MvcHtmlString.Create("Testing'`")'
。
更新:
我把你的代码'
,把它放在浏览器中,把那里显示的内容复制到Visual Studio中,如下所示:
@MvcHtmlString.Create("'")
而且它确实有效,我只是回来了,而不是'
。
。
更新2:
这也适用:
@{ViewBag.Symbol = "'";} @MvcHtmlString.Create(ViewBag.Symbol)
- 如何使用ASP.NET MVC 3和Stackoverflow的Markdown
- ASP.NET MVC 3 – 无法find所需的.Net Framework数据提供程序
- 剃刀语法和Javascript
- 将HttpPostedFileBase转换为byte
- “System.Web.Mvc.MvcWebRazorHostFactory”types的expression式不能用于返回types“System.Web.WebPages.Razor.WebRazorHostFactory”
- 如何使Html.DisplayFor显示换行符?
- 我怎样才能让我的数据库使用entity frameworkCodeFirst种子?
- MVC3 – 将数据超出模型部分视图
- Razor ViewEngine HTML.Checkbox方法创build一个隐藏的input。 为什么?