2014-12-25 3 views
2

Я пытаюсь реализовать менеджер контента в турецком языке с помощью C# MVC Razor.Как правильно кодировать ç ö ü?

Я знаю, что можешь использовать @Html.Raw(model.content) для того, чтобы получить не кодированный текст, но это также может создать некоторые проблемы безопасности, XSS, инъекция и т.д ..

Вместо если я просто использовать @model.content для отображения текста непосредственно, я «получаю следующий источник HTML, который я думаю, может создать проблемы SEO, а также

@model.content outputs : ......güvece dökün....... 

Оригинальный текст

@Html.Raw(model.content) outputs : ......güvece dökün....... 

Как избежать mvc для кодирования следующего charcter и сохранения html в одно и то же время?

ç, ü, ö

Конечно, я могу создать свой собственный HTML расширение,, но я хотел бы знать, если есть безопасный и надежный способ это?

+0

Похоже, 'model.content' имеет HTML-объекты, такие как' 'ü вместо символов Unicode. Проверьте источник HTML своей страницы, возможно, вы увидите '& # 252;'? Если это так, вызовите 'System.Net.WebUtility.HtmlDecode' для' model.content'. –

ответ

2

Как я уже говорил на мой вопрос, я отсортирован его с помощью HTML хелпер extesion

@{ 
    string v = "<script>I Ğ Ü İ Ş Ç Ö ö ç i ş ü ğ ı ü ğ p ı o . ö ö ç ı ı n ü ğ ş a l e r t'\'\\'(x)</script>"; 
     @Html.SafeHtml(v); 
     @Html.SafeHtmlV2(v); 
    } 

//code above outputs: &lt;script&gt;I Ğ Ü İ Ş Ç Ö ö ç i ş ü ğ ı ü ğ p ı o . ö ö ç ı ı n ü ğ ş a l e r t&#39;&#39;\&#39;(x)&lt;/script&gt 

И мой внутренний classs следующим образом, вы можете выбрать для замены одного символа на один (метод SafeHtmlV2) или interate usign массив (метод SafeHtml),

public static class MyHelper 
{ 
    public static MvcHtmlString SafeHtml(this HtmlHelper html, string input) 
    { 
     string[] decodeItems = new string[] { "&#252;", "&#246;", "&#231;", "&#220;", "&#199;", "&#214;" }; 
     string str = System.Net.WebUtility.HtmlEncode(input); 
     foreach (string s in decodeItems) 
     { 
      str = str.Replace(s, System.Net.WebUtility.HtmlDecode(s)); 
     } 
     return new MvcHtmlString(str); 
    } 

    public static MvcHtmlString SafeHtmlV2(this HtmlHelper html, string input) 
    { 
     string str = System.Net.WebUtility.HtmlEncode(input).Replace("&#252;", "ü") 
       .Replace("&#246;", "ö") 
       .Replace("&#231;", System.Net.WebUtility.HtmlDecode("&#231;")) 
       .Replace("&#220;", System.Net.WebUtility.HtmlDecode("&#220;")) 
       .Replace("&#199;", System.Net.WebUtility.HtmlDecode("&#199;")) 
       .Replace("&#214;", System.Net.WebUtility.HtmlDecode("&#214;")); 
     return new MvcHtmlString(str); 
    } 

} 
Смежные вопросы