MVC4 regroupement avec TinyMCE

j'ai un problème à utiliser MVC4 Bundling avec TinyMCE. J'obtiens cette erreur:

    GET http://localhost:54717/Admin/EditText//langs/da.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/lists/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/autolink/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//themes/advanced/editor_template.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/spellchecker/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/pagebreak/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/style/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/table/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/layer/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/save/editor_plugin.js 404 (Not Found)
Failed to load: http://localhost:54717/Admin/EditText//langs/da.js 

le code ressemble à ceci (dans BundleConfig.cs)

bundles.Add(
      new ScriptBundle("~/Scripts/Site").Include(
        "~/Scripts/jquery-1.9.1.js",
        "~/Scripts/tinymce/tiny_mce.js",
         "~/Scripts/jquery-ui-1.10.1.js",
        "~/Scripts/jquery.ui.slider.js",
        "~/Scripts/oline.Base.js",
        "~/Scripts/Validate/Language/jquery.validationEngine-da.js",
        "~/Scripts/Validate/jquery.validationEngine.js",
        "~/Scripts/jquery.ui.effect-blind.js",
        "~/Scripts/jquery.placeholder.min.js"));

      BundleTable.EnableOptimizations = true; 

Et dans la mise en page:

@Scripts.Render("~/Scripts/Site")

mais si j'enlève le tiny_mce.js forme de l'assemblage et de la placer comme <script src="~/Scripts/tinymce/tiny_mce.js"></script> ça marche très bien. Est-ce parce que j'ai besoin de passer outre le chargement automatique par tinymce et placer le faire manuellement?

25
demandé sur mortenstarck 2013-04-10 14:51:55
la source

4 ответов

J'ai rencontré ça aujourd'hui aussi. Il semble que lorsque tinymce est empaqueté, il ne peut pas localiser d'Autres scripts dépendants (plugins, editor template, etc.).

puisque TinyMCE est déjà livré minié, j'ai résolu cela juste en l'excluant du paquet et en le chargeant séparément. Quelque chose comme ceci:

@* include tinymce unbundled so it can find its plugins and other scripts internally when bundles are optimized *@
@if (BundleTable.EnableOptimizations)
{
    <script type="text/javascript" src="~/scripts/tinymce/tiny_mce.js"></script>
}
else
{
    <script type="text/javascript" src="~/scripts/tinymce/tiny_mce_src.js"></script>
}

@Scripts.Render("~/Scripts/Site")

de cette façon, vous utilisez toujours la version pré-minifiée lorsque les optimisations sont activées, et le code source brut pendant le débogage. Il le fait avec plus d'un demande envoyée par le navigateur.

15
répondu danludwig 2013-04-30 18:41:10
la source
tinymce.baseURL = "@Url.Content("~/Scripts/tinymce")";

ou là où vos scripts sont conservés.

j'ai eu ce même problème. C'est mon travail produit final

    <script>
    tinymce.baseURL = "@Url.Content("~/Scripts/tinymce")";

    // tinyMCE setup
    tinymce.init({
        selector: "textarea.rt-edit",
        browser_spellcheck: true,
        menubar: false,
        plugins: "paste,preview,code,textcolor,link",
        invalid_elements: "script",

        // Theme options - button# indicated the row# only
        toolbar1: "bold italic underline strikethrough subscript superscript link | fontselect fontsizeselect forecolor backcolor | justifyleft justifycenter justifyright cut copy paste pastetext pasteword| outdent indent | undo redo | code preview ",

    });
</script>
27
répondu Codeacula 2014-04-23 00:08:20
la source

@Codeacula avait une bonne solution, mais une autre méthode est de mettre le chemin du paquet par rapport au dossier TinyMCE.

notez que vous devez le retirer du paquet de Script principal pour que cela fonctionne, mais comme je n'utilise pas TinyMCE sur chaque page, il n'y a aucun sens à l'ajouter au paquet principal. Aussi, j'ai utilisé .min.js comme extension parce qu'il charge des plugins basés sur l'extension du fichier maître, et je n'ai rien d'autre que .min.js fichiers dans mes plugins dossier.

var tinymce = new ScriptBundle("~/Scripts/tinymce/tinymce-bundle.min.js")
    .Include("~/Scripts/tinymce/tinymce.min.js");
bundles.Add(tinymce);

sur vos pages où TinyMCE est nécessaire:

@Scripts.Render("~/Scripts/tinymce/tinymce-bundle.min.js");
7
répondu bradlis7 2015-02-07 01:11:45
la source

dans mon cas, je fais ce qui suit pour résoudre : Ignorez le bundling et référencez directement la version miniaturisée du plugin.

@section scripts
{
    @Scripts.Render("~/bundles/ajax")
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/tinymce/tinymce.min.js"></script>
}
0
répondu f.belhocine 2015-10-15 14:22:55
la source

Autres questions sur