-1

我对带有特殊法语字符的 c# 和 html 代码有疑问:

<html>
<head>
    <link rel="stylesheet" href="~/Content/jquery.treeview.css" />
    <script src="~/Content/jquery.cookie.js" type="text/javascript"></script>
    <script src="~/Content/jquery.treeview.js" type="text/javascript"></script>
    <script type="text/javascript" src="~/Content/demo.js"></script>
    <!-- partie calendrier-->
     <link rel="stylesheet" href="~/Scripts/Calendar/theme.css" />
    <link href="~/Scripts/Calendar/fullcalendar.css" rel="stylesheet" />
<link href="~/Scripts/Calendar/fullcalendar.print.css" rel="stylesheet" media="print" />
<script src="~/Scripts/Calendar/fullcalendar.min.js"></script>
      <style>
        body
        {
            background-color:#eee;
        }

        #tree {
            background-color:#eee;
        }
        .affaire {
            color:black;
                font-size: 16px;
        }
        .tache {
            color:black;
                font-size: 12px;
        }
         .projet {
            color:blue;
                font-size: 20px;
        }
           .sequence {
            color:blue;
                font-size: 16px;
        }
           #calendar {
        width: 900px;
        margin: 0 auto;

        }
          p {
             color:white;
                font-size: 12px;
          }
          #status
{
   position:absolute;
   left:60%;

}
    </style>

    <style>
    input {
    border: 1px solid #e2e2e2;
    background: #fff;
    color: #333;
    font-size: 1.2em;
    margin: 5px 0 6px 0;
    padding: 5px;
    width: 300px;
    }
        a {
            font-size:14px;
        }

        </style>

    <script>

        $(document).ready(function () {
            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();
            var tab = [];
            var d1 = [];
            var m1 = [];
            var y1 = [];
            var d2 = [];
            var m2 = [];
            var y2 = [];
            var colors = [];

             @for(int i =0; i< @Model.Get_List_Tache().Count;i++){

                 @: d1.push(@Model.Get_List_Tache()[i].Begin_date.Day);
                             @: m1.push(@Model.Get_List_Tache()[i].Begin_date.Month);
                             @: y1.push(@Model.Get_List_Tache()[i].Begin_date.Year);
                             @: d2.push(@Model.Get_List_Tache()[i].End_date.Day);
                             @: m2.push(@Model.Get_List_Tache()[i].End_date.Month);
                             @: y2.push(@Model.Get_List_Tache()[i].End_date.Year);
                         }
            d1.reverse();
            m1.reverse();
            y1.reverse();
            d2.reverse();
            m2.reverse();
            y2.reverse();
            @for(int i =0; i< @Model.Get_List_Tache().Count;i++){
            @:var e = { title: "Tâche: @Model.Get_List_Tache()[i].Tache_description", start: new Date(y1.pop(), m1.pop() - 1, d1.pop(), 08, 00), end: new Date(y2.pop(), m2.pop() - 1, d2.pop(), 18, 00), allDay: true, color: "@Model.GetColors()[i]", };
                        @: tab.push(e);
        }
            $('#calendar').fullCalendar({
                theme: true,
                header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' },
                editable: true,
                events: tab
            });

        });


</script>


</head>
    <body>

     <table > <tr><td style="background-color:darkcyan; width:30%;"> <p>Tâche en cours</p></td><td style="background-color:black;width:30%"> <p>Tâche terminée</p></td><td style="background-color:darkred;width:30%"> <p>Tâche en urgence</p></td></tr>
           </table>
    <br />
        <br />

        <table><tr><td style="" >

 </td> <td > 
        <div id='calendar'></div>
</td>

            </tr>
            </table>

    </body>
</html>

我得到这个结果:

错误

在该行Tâche: développement中,结果是Tâche: d&amp;#233;veloppement。所以字符â被接受但é不是。

这个错误的原因是什么?我该如何解决?

4

2 回答 2

2

这里重要的一行是

title: "Tâche: @Model.Get_List_Tache()[i].Tache_description"

"Tâche: "部分只是纯文本,而您的部分"développement"是动态的。动态部分可能在您的数据存储中或在将其发送到客户端之前由框架进行转义/编码。

有关解决方案,请参阅问题和答案

您的选择之一是使用@Html.Raw( ... dynamic text ... ),但要小心,它还可能编写会使您的 javascript 无效的字符(想象您的动态字符串包含 a;或 a ")。

于 2013-08-19T14:31:37.700 回答
2

Razor 对您的 Javascript 输出进行 HTML 编码。

您需要通过调用来防止这种情况Html.Raw()
您还需要对它进行 Javascript 转义以防止 XSS 漏洞。

于 2013-08-19T14:33:18.110 回答