[英]Javascript, Razor and Escape characters. Like apostrophe
我在我的 MVC3 項目中使用 Razor。 而且我正在使用 FullCalendar JQuery 插件。 因此,當我嘗試填充數組時,它運行良好。 除了一件事。 如果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: '@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
的通常評論:使用ViewBag
是不好的做法,我建議您使用帶有視圖模型的強類型視圖。
HttpUtility.JavaScriptStringEncode
在這里並不是真正需要的。 簡單地
'@Html.Raw(s.Name)'
對我有用。
你說你已經嘗試過 MvcHtmlString.Create,但對我來說,這對我來說似乎工作正常:
'Trying @MvcHtmlString.Create("Testing'`")'
.
更新:
我拿走了你的代碼'
,將其放入瀏覽器,復制其中顯示的內容,然后將其放回 Visual Studio,例如:
@MvcHtmlString.Create("'")
它確實有效,我只得到了'
,而不是'
.
.
更新 2:
這也有效:
@{ViewBag.Symbol = "'";}
@MvcHtmlString.Create(ViewBag.Symbol)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.