1

Я закодировал свою собственную систему цитирования, так как у HtmlEditorExtender нет системы цитирования. Или у него есть?HtmlEditorExtender stripes pre pre tag

asp.net 4.5 и ASP.NET AJAX Control Toolkit 16.1.0.0

В 2016 году мы до сих пор не имеем белый список функции?

Для цитаты, я использую pre tag. Тем не менее, последний HtmlEditorExtender в версии 16.1.0 выдает префикс. Он просто удаляет часть, содержащую pre tag.

Я имею в виду, как

<pre><pre>CeFurkan: Wrote</pre>dsfsdfs</pre> 

Это удаляется на стороне клиента перед отправкой на сервер. Как я могу разрешить этот тег?

Я также попытался с классом пядь = "MyClass", и он удаляет класс метки на этот раз

мои настройки являются

код за

htmlEditorExtender1.EnableSanitization = true; 

переднего кода

<ajaxToolkit:HtmlEditorExtender ID="htmlEditorExtender1" TargetControlID="txtMessageBody" 
        runat="server" DisplaySourceTab="True"> 
        <Toolbar> 
         <ajaxToolkit:Undo /> 
         <ajaxToolkit:Redo /> 
         <ajaxToolkit:Bold /> 
         <ajaxToolkit:Italic /> 
         <ajaxToolkit:Underline /> 
         <ajaxToolkit:StrikeThrough /> 
         <ajaxToolkit:Subscript /> 
         <ajaxToolkit:Superscript /> 
         <ajaxToolkit:JustifyLeft /> 
         <ajaxToolkit:JustifyCenter /> 
         <ajaxToolkit:JustifyRight /> 
         <ajaxToolkit:JustifyFull /> 
         <ajaxToolkit:InsertOrderedList /> 
         <ajaxToolkit:InsertUnorderedList /> 
         <ajaxToolkit:CreateLink /> 
         <ajaxToolkit:UnLink /> 
         <ajaxToolkit:RemoveFormat /> 
         <ajaxToolkit:SelectAll /> 
         <ajaxToolkit:UnSelect /> 
         <ajaxToolkit:Delete /> 
         <ajaxToolkit:Cut /> 
         <ajaxToolkit:Copy /> 
         <ajaxToolkit:Paste /> 
         <ajaxToolkit:BackgroundColorSelector /> 
         <ajaxToolkit:ForeColorSelector /> 
         <ajaxToolkit:FontNameSelector /> 
         <ajaxToolkit:FontSizeSelector /> 
         <ajaxToolkit:Indent /> 
         <ajaxToolkit:Outdent /> 
         <ajaxToolkit:InsertHorizontalRule /> 
         <ajaxToolkit:HorizontalSeparator /> 
        </Toolbar> 
       </ajaxToolkit:HtmlEditorExtender> 

И веб-конфигурация

<ajaxControlToolkit useStaticResources="true" renderStyleLinks="false" htmlSanitizer="AjaxControlToolkit.HtmlEditor.Sanitizer.DefaultHtmlSanitizer, AjaxControlToolkit.HtmlEditor.Sanitizer" /> 

полная ошибка выдается, когда ответ Юрий попытался

Value cannot be null. 
Parameter name: type 
Stack: 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.Activator.CreateInstance(Type type) 
    at AjaxControlToolkit.HtmlEditorExtender.CreateSanitizer() 
    at System.Lazy`1.CreateValue() 
    at System.Lazy`1.LazyInitValue() 
    at System.Lazy`1.get_Value() 
    at AjaxControlToolkit.HtmlEditorExtender.get_Sanitizer() 
    at AjaxControlToolkit.HtmlEditorExtender.OnInit(EventArgs e) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Control.InitRecursive(Control namingContainer) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

реализация класса

enter image description here

ответ

1

Самый простой способ на мой взгляд, является создание собственной реализации IHtmlSanitizer наследованию DefaultHtmlSanitizer и переопределить метод GetSafeHtmlFragment, как показано ниже

public class MyHtmlSanitizer : DefaultHtmlSanitizer, IHtmlSanitizer 
{ 
    private static readonly string[] whiteListTags = (ConfigurationManager.AppSettings["whiteListTags"] ?? "").Split(','); 

    string IHtmlSanitizer.GetSafeHtmlFragment(string htmlFragment, Dictionary<string, string[]> whiteList) 
    { 
     foreach (var tag in whiteListTags) 
     { 
      if (!whiteList.ContainsKey(tag)) 
       whiteList.Add(tag, new string[0]); 
     } 

     return base.GetSafeHtmlFragment(htmlFragment, whiteList); 

    } 
} 

Затем добавить в AppSettings раздел web.config настройки для собственных тегов белого списка:

<appSettings> 
    <add key="whiteListTags" value="pre"/> 
</appSettings> 

и настроить инструментарий, чтобы использовать эту дезинфицирующее вместо значения по умолчанию:

<ajaxControlToolkit 
    useStaticResources="true" 
    renderStyleLinks="false" 
    htmlSanitizer="AjaxControlToolkit.Customization.MyHtmlSanitizer, AjaxControlToolkit.Customization" 
    tempFolder="~/Temp"/> 
+0

ти очень много для ответ, но он дал ошибку :(в System.Activator.CreateInstance (типа Type, Boolean непубличных) в System.Activator.CreateInstance (тип типа) в AjaxControlToolkit.HtmlEditorExtender.CreateSanitizer() в System.Lazy'1.CreateValue() в System.Lazy'1.LazyInitValue() в System.Lazy'1.get_Value() в AjaxControlToolkit.HtmlEditorExtender.get_Sanitizer ( – MonsterMMORPG

+0

@MonsterMMORPG типа затруднительное имя в ajaxControlToolkit.htmlSanitizer по названию типа заказного sanotozer в ваш проект –

+0

У меня нет специального дезинфицирующего средства. Я реализовал по умолчанию. Также я последовал за вашим ответом.Добавлен новый класс точно так же, как ваш, а затем модифицирован веб-конфигуратор, как вы сказали – MonsterMMORPG

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

  • Нет связанных вопросов^_^