ASP.NET MVC View - проблема с FCKEditor - PullRequest
0 голосов
/ 27 марта 2009

У меня другая проблема с FCKEditor в ASP.NET MVC. Пожалуйста, ознакомьтесь с кодом ниже

<script type="text/javascript">
            var sBasePath = 'http://localhost:2170/Content/fckeditor/'; 
            var oFCKeditor = new FCKeditor('FCKeditor1');
            oFCKeditor.BasePath = sBasePath;
            oFCKeditor.Height = 300;
            oFCKeditor.Create();
            var timer;

            function ShowContent() {
                var oEditor = FCKeditorAPI.GetInstance('FCKeditor1');
                if (oEditor != undefined) {
                    var ContentText = '<%= Model.Article.ContentText %>';

                    oEditor.SetHTML(ContentText)
                    clearTimeout(timer);
                }
                else {
                    timer = setTimeout("ShowContent()", 1000);
                }
            }
            timer = setTimeout("ShowContent()", 1000);

        </script>

Как вы можете видеть, первая проблема заключается в том, что мне нужно жестко закодировать значение BasePath, если я установлю для BasePath относительный путь, такой как Content / fckeditor, то он будет искать FCKEditor в http://localhost:2170/Article/Content/fckeditor, что приведет до 404 ошибка. Несмотря на то, что он все равно работает с абсолютным путем, я должен изменить этот путь при развертывании на рабочий сервер.

Вторая проблема - это привязка значения к fckeditor, так как fckeditor доступен только после полной загрузки страницы, я не могу напрямую использовать метод SetHTML при создании fckeditor, потому что на данный момент объект oEditor не определен. Вместо этого я должен использовать функцию setTimeout, чтобы повторно проверять объект oEditor, пока он не станет доступен, а затем привязывать к нему содержимое.

Я не знаю, есть ли другие способы решить две проблемы выше?

Ответы [ 3 ]

3 голосов
/ 27 марта 2009

Для первой проблемы используйте это:

<%= ResolveUrl("~/Content/fckeditor") %>
2 голосов
/ 27 марта 2009

Во-первых, я бы выполнил всю эту работу, когда страница закончила загрузку (используя событие window onload ). Это будет гарантировать, что все элементы управления были созданы и доступны для использования, во-вторых, установите базовый путь с помощью метода Url.Content:

var sBasePath = '<%= Url.Content ("~/Content/fckeditor/") %>';

Таким образом, не имеет значения, где запущено приложение (http://localhost:PORT или http://dev.someplace.com и т. Д.).

0 голосов
/ 27 марта 2009

Разве FCK не использует значение текстовой области, к которой вы его применяете, для установки содержимого? Вам не нужно заполнять его из JavaScript, просто установите значение из вашей модели в вызове Html.TextArea.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...