我已经编码了我自己的报价系统,因为HtmlEditorExtender没有报价系统。或者它有?
asp.net 4.5和ASP.NET AJAX控制工具包16.1.0.0
2016年的还没有白名单吗?
作为引用,我使用的是预标签。但是,16.1.0版本中的最新HtmlEditorExtender去掉了预标记。它只是删除了包含预标记的部分。
我是说就像
<pre><pre>CeFurkan: Wrote</pre>dsfsdfs</pre>这将在客户端删除,然后再提交到服务器。我怎么允许这个标签?
我也尝试过使用span class="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)类实现

发布于 2016-06-09 10:20:35
在我看来,最简单的方法是创建自己的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设置的web.config部分:
<appSettings>
<add key="whiteListTags" value="pre"/>
</appSettings>并将工具包配置为使用此消毒液而不是默认的:
<ajaxControlToolkit
useStaticResources="true"
renderStyleLinks="false"
htmlSanitizer="AjaxControlToolkit.Customization.MyHtmlSanitizer, AjaxControlToolkit.Customization"
tempFolder="~/Temp"/>https://stackoverflow.com/questions/37715579
复制相似问题