2013-08-19 80 views
-1

我有一個C#和與HTML代碼中的問題特殊字符法文:修改特殊字符在asp.net mvc的

<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> 

我得到這樣的結果:

error

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

這個錯誤的原因是什麼?我該如何解決它?

+3

請舉個更具體,更簡單的例子 –

+0

舉例說明一下,對不起?對我來說看起來很清楚 –

+2

閱讀生成的源代碼。 – SLaks

回答

2

重要的線在這裏是

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

"Tâche: "部分只是純文本,而你的"développement"是動態的。在將數據發送到客戶端之前,動態部分可能會在數據存儲或框架中轉義/編碼。

有關解決方案,請參閱

你的一個選擇是使用@Html.Raw(... dynamic text ...),但要小心它的問題和答案,也可以寫會使你的javascript無效的字符(想象你的動態字符串包含;")。

2

剃鬚刀是HTML編碼您的Javascript輸出。

您需要通過調用Html.Raw()來阻止該操作。
您還需要使用Javascript轉義它來防止XSS漏洞。