如何使用TinyMCE捆绑?

时间:2014-10-29 17:25:52

标签: asp.net-mvc razor tinymce bundling-and-minification

当我尝试渲染缩小的TinyMCE包时,Internet Explorer很合适。因此,为了创建一个避免缩小的包,我跟着these instructions在我的BundleConfig中设置了“通用”或“基本”包:

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"

2 个答案:

答案 0 :(得分:5)

正如评论中所指出的那样,this question解决了部分问题。由于您无法为捆绑包提供名称,该名称也是现有目录的名称,因此我将其重命名为:

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配置来指定skin目录来解决这个问题:

$('.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请求)。

答案 1 :(得分:1)

将您的包名称更改为磁盘上现有位置以外的其他名称

例如:Bundle( "~/Scripts/tinymce")Bundle( "~/js/tinymce")