Набор MVC4 с TinyMCE
У меня проблема с объединением MVC4 вместе с TinyMCE. Я получаю эту ошибку:
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
Код выглядит так (In 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;
И в макете:
@Scripts.Render("~/Scripts/Site")
Но если я удалю форму tiny_mce.js, связывая ее и поместив ее так, как < script src="~/Scripts/tinymce/tiny_mce.js"></script>
, она работает нормально. Это потому, что мне нужно переопределить автоматическую загрузку по тиниме и поместить ее вручную?
Ответы
Ответ 1
Просто наткнулся на это и сегодня. Кажется, что когда tinymce в комплекте, он не может найти другие зависимые скрипты (плагины, шаблон редактора и т.д.).
Так как TinyMCE уже подсчитан, я решил это, исключив его из комплекта и загрузив отдельно. Что-то вроде этого:
@* 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")
Таким образом, вы по-прежнему используете предварительно модифицированную версию, когда включена оптимизация, и исходный исходный код при отладке. В конце концов, это приводит к тому, что браузер отправляет несколько запросов.
Ответ 2
Перед вызовом tinymce.init выполните следующие действия:
tinymce.baseURL = "@Url.Content("~/Scripts/tinymce")";
Или где хранятся ваши скрипты.
У меня была такая же проблема. Это мой рабочий конечный продукт
<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>
Ответ 3
@Codeacula имеет хорошее решение, но другой метод заключается в том, чтобы поместить путь пакета относительно папки TinyMCE.
Обратите внимание, что вы должны вытащить его из основного пакета Script, чтобы сделать это, но поскольку я не использую TinyMCE на каждой странице, нет смысла добавлять его в основной пакет. Кроме того, я использовал .min.js как расширение, потому что он загружает плагины на основе расширения основного файла, и у меня нет ничего, кроме .min.js файлов в моя папка плагинов.
var tinymce = new ScriptBundle("~/Scripts/tinymce/tinymce-bundle.min.js")
.Include("~/Scripts/tinymce/tinymce.min.js");
bundles.Add(tinymce);
На ваших страницах, где требуется TinyMCE:
@Scripts.Render("~/Scripts/tinymce/tinymce-bundle.min.js");
Ответ 4
В моем случае я разрешаю следующее:
Игнорируйте связывание и прямо ссылайтесь на уменьшенную версию плагина.
@section scripts
{
@Scripts.Render("~/bundles/ajax")
@Scripts.Render("~/bundles/jqueryval")
<script src="~/Scripts/tinymce/tinymce.min.js"></script>
}