我有一个带有自定义/未嵌入皮肤的 Telerik RadEditor (2017.3) 控件(使用 Telerik 上的主题构建器创建),当我为 DialogsCssFile 属性输入值时,页面的标记会发生变化,这意味着我的自定义皮肤不再应用于编辑器。
为什么这是一个问题?例如,查找/替换对话框中的 css 显示不正确,在做了一些研究之后,我需要对自定义对话框.css文件进行一些@imports,并将其放入 DialogsCssFile 属性中。
一旦我这样做,RadEditor 页面中生成的标记就会从
Radeditor RadEditor_MyCustomSkin reWrapper
自
Radeditor MyCustomSkin reWrapper
测量我的radeditor皮肤未应用于编辑器,如果我删除DialogCssFile,则编辑器皮肤正确加载,但对话框看起来错误。在页面源中,窗口是页面中的div,而不是 iFrame
问题:
我在这里做错了什么吗?
法典:
页面 CSS 文件(按顺序)
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/formdecorator.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/toolbar.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/window.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/combobox.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/dropdownlist.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/tabstrip.MyCustomSkin.css" />
<link type="text/css" rel="stylesheet" href="/assets/css/MyCustomSkin/editor.MyCustomSkin.css" />
主辐射编辑器类(给出类名的概念)
.RadEditor_MyCustomSkin { /* css styles - all generated automatically */ }
控制:
<telerik:RadEditor runat="server" ID="pageRadEdit" ToolbarMode="Default" EditModes="Design,Html"
DialogsCssFile="~/assets/css/MyCustomSkin/DialogHandler.MyCustomSkin.css"
ToolsFile="~/App_Data/Editor.xml" Width="980px" Height="800px"
EnableResize="false" OnClientLoad="resizeMe" NewLineMode="P"
OnClientSelectionChange="$page.setdirty"
ContentFilters="DefaultFilters,ConvertFontToSpan,IECleanAnchors,OptimizeSpans,MozEmStrong,FixEnclosingP"
EnableEmbeddedSkins="false">
<SpellCheckSettings DictionaryLanguage="en-GB" AllowAddCustom="false" />
<Languages>
<telerik:SpellCheckerLanguage Code="en-GB" Title="English (UK)" />
</Languages>
</telerik:RadEditor>
DialogHandler.MyCustomSkin.css
@import url('FormDecorator.MyCustomSkin.css');
/*@import url('Grid.MyCustomSkin.css');*/
@import url('Input.MyCustomSkin.css');
@import url('Splitter.MyCustomSkin.css');
@import url('TabStrip.MyCustomSkin.css');
@import url('ToolBar.MyCustomSkin.css');
/*@import url('Upload.MyCustomSkin.css');*/
@import url('Window.MyCustomSkin.css');
@import url('ComboBox.MyCustomSkin.css');
@import url('Button.MyCustomSkin.css');
/*@import url('Editor.MyCustomSkin.css');*/
注意:即使底部导入未注释,编辑器 css 仍然使用错误的类
网络配置设置
<add key="Telerik.Skin" value="MyCustomSkin" />
<add key="Telerik.ScriptManager.TelerikCdn" value="Disabled" />
<add key="Telerik.StyleSheetManager.TelerikCdn" value="Disabled" />
<add key="Telerik.Web.UI.RenderMode" value="lightweight" />
<add key="Telerik.Web.UI.EnableEmbeddedSkins" value="false" />
<add key="Telerik.EnableEmbeddedSkins" value="false" />
这是记录在[The DialogsCssFile property breaks the appearance of a custom skin][1]
处修复的已知问题。
要解决此问题,请将 RadEditor 的 RenderMode 属性显式设置为"轻量级",即
<telerik:RadEditor RenderMode="Lightweight" DialogsCssFile="~/assets/css/MyCustomSkin/DialogHandler.MyCustomSkin.css" ID="pageRadEdit" runat="server" Skin="MyCustomSkin" EnableEmbeddedSkins="false">
<ImageManager ViewPaths="~/" UploadPaths="~/" />
</telerik:RadEditor>