Asp.net mvc 如何使用TinyMCE捆绑?

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

当我尝试渲染缩小的TinyMCE捆绑包时,Internet Explorer会大发雷霆。因此,为了创建一个避免缩小的捆绑包,我在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"

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


例如:
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。谢谢