Asp.net mvc 如何使用TinyMCE捆绑?
当我尝试渲染缩小的TinyMCE捆绑包时,Internet Explorer会大发雷霆。因此,为了创建一个避免缩小的捆绑包,我在BundleConfig中设置了一个“通用”或“基本”捆绑包:Asp.net mvc 如何使用TinyMCE捆绑?,asp.net-mvc,razor,tinymce,bundling-and-minification,Asp.net Mvc,Razor,Tinymce,Bundling And Minification,当我尝试渲染缩小的TinyMCE捆绑包时,Internet Explorer会大发雷霆。因此,为了创建一个避免缩小的捆绑包,我在BundleConfig中设置了一个“通用”或“基本”捆绑包: bundles.Add( new Bundle( "~/Scripts/tinymce" ) .Include( "~/Scripts/tinymce/tinymce.min.js", "~/Scripts/tinym
bundles.Add( new Bundle( "~/Scripts/tinymce" )
.Include( "~/Scripts/tinymce/tinymce.min.js",
"~/Scripts/tinymce/jquery.tinymce.min.js" ) );
如何在页面上呈现此内容?以下各项似乎都不起作用:
@Bundles.Render( "~/Scripts/tinymce" )
@Bundle.Render( "~/Scripts/tinymce" )
@Bundle( "~/Scripts/tinymce" )
这将至少呈现标记:
@Scripts.Render( "~/Scripts/tinymce" )
但在尝试加载文件时会抛出403错误:
"NetworkError: 403 Forbidden - http://localhost:1062/Scripts/tinymce/?v=MTojK5ORvAZmonNqNGJ3aWhOYyor-Fa8dZHTqfSOlUM1"
将捆绑包名称更改为磁盘上现有位置以外的其他名称
例如:
Bundle(“~/Scripts/tinymce”)
到Bundle(“~/js/tinymce”)
正如评论中指出的,解决了部分问题。由于您不能为包指定与现有目录相同的名称,因此我将其重命名为:
bundles.Add( new Bundle( "~/js/tinymce" )
.Include( "~/Scripts/tinymce/tinymce.min.js",
"~/Scripts/tinymce/jquery.tinymce.min.js" ) );
但是,由于TinyMCE动态加载依赖项(插件和主题文件)的方式,我必须确保捆绑包中也包含所有这些内容:
bundles.Add( new Bundle( "~/js/tinymce" )
.Include( "~/Scripts/tinymce/tinymce.min.js",
"~/Scripts/tinymce/jquery.tinymce.min.js",
"~/Scripts/tinymce/plugins/autoresize/plugin.min.js",
"~/Scripts/tinymce/plugins/charmap/plugin.min.js",
"~/Scripts/tinymce/plugins/code/plugin.min.js",
"~/Scripts/tinymce/plugins/image/plugin.min.js",
"~/Scripts/tinymce/plugins/table/plugin.min.js",
"~/Scripts/tinymce/plugins/textcolor/plugin.min.js",
"~/Scripts/tinymce/themes/modern/theme.min.js") );
这意味着,如果我想要一个新的插件,它将需要代码更改和重新部署bin文件,而不是简单的脚本更新。然而,这个应用程序的需求没有改变,而且可能不会很快改变(另外,它是一个内部应用程序),所以这不是一个真正的问题
最后,TinyMCE还动态加载皮肤文件(css、图像和字体)。我可以通过更改TinyMCE配置以指定皮肤目录来解决此问题:
$('.tinymce').tinymce({
skin_url: '/Scripts/tinymce/skins/lightgray',
// other stuff...
});
我尝试为主题文件创建捆绑包:
bundles.Add( new Bundle( "~/css/tinymce" )
.Include( "~/Scripts/tinymce/skins/lightgray/*.css" ) );
然后像这样更改我的配置:
$('.tinymce').tinymce({
skin_url: '/css/tinymce',
// blah blah blah...
});
但是,因为TinyMCE查找单个文件,所以这不起作用。它为skin.min.css和content.min.css抛出了404个错误
现在我已经打包了一些TinyMCE文件,但不是全部。这至少比我以前做的更好(每个文件都有单独的HTTP请求)。不幸的是,这不起作用,因为TinyMCE需要加载一堆其他资源。对TinyMCE不太熟悉,但为什么这些资源不属于您的包?有点。看看我贴的答案。我不是很满意,所以如果你能想出一个改进的方法,请告诉我。这个问题已经得到了回答。您不能为您的捆绑包指定与现有目录相同的名称。请使用skin_url:sorted my issue。谢谢