1

由於HtmlEditorExtender沒有報價系統,因此我編寫了自己的報價系統。還是它有?HtmlEditorExtender除去預標籤

asp.net 4.5和ASP.NET AJAX Control Toolkit的16.1.0.0

2016年我們仍然沒有白名單功能?

對於引用,我使用的是預標籤。但是,最新的HtmlEditorExtender版本16.1.0將pre標籤劃掉。它只是刪除包含預標籤的部分。

我的意思是像

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

和web配置

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

    } 
} 

然後加入到web.config中的appSettings部分設置自己的標籤白名單:

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

並配置工具來使用此清潔劑,而不是默認:

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

TY非常多的答案但它給錯誤:(​​在System.Activator.CreateInstance(類型類型,布爾nonPublic) at System.Activator.CreateInstance(Type type) at AjaxControlToolkit.HtmlEditorExtender.CreateSanitizer() at System.Lazy'1.CreateValue () 在System.Lazy'1.LazyInitValue() 在System.Lazy'1.get_Value() 在AjaxControlToolkit.HtmlEditorExtender.get_Sanitizer(在ajaxControlToolkit.htmlSanitizer – MonsterMMORPG

+0

@MonsterMMORPG修復類型名稱根據定製sanotozer的類型名稱你的項目 –

+0

Yuriy我沒有任何定製殺菌劑。我已經實現了默認的一個。我也跟着你的回答。正如您所說的那樣添加了一個新類,然後修改了web配置,如您所說 – MonsterMMORPG