簡體   English   中英

Javascript、Razor 和轉義字符。 像撇號

[英]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'`")'

.

更新:

我拿走了你的代碼&#39; ,將其放入瀏覽器,復制其中顯示的內容,然后將其放回 Visual Studio,例如:

@MvcHtmlString.Create("'")

它確實有效,我只得到了' ,而不是&#39; .

.

更新 2:

這也有效:

@{ViewBag.Symbol = "'";}
@MvcHtmlString.Create(ViewBag.Symbol)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM