ASP.NET MVC视图 - FCKEditor的问题

时间:2009-03-27 01:21:00

标签: asp.net-mvc

我在ASP.NET MVC中遇到了FCKEditor的另一个问题。请查看以下代码

<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之类的相对路径,那么它将在http://localhost:2170/Article/Content/fckeditor中查找FCKEditor,这将导致404错误。虽然它在绝对路径下仍能正常工作,但我必须在部署到生产服务器时更改这些路径。

第二个问题是将值绑定到fckeditor,因为fckeditor只有在页面完全加载后才可用,我在创建fckeditor时不能直接使用SetHTML方法,因为此时oEditor对象是未定义的。相反,我必须使用setTimeout函数重复检查oEditor对象,直到它可用,然后将内容绑定到它。

我不知道是否有其他方法可以解决上述两个问题?

3 个答案:

答案 0 :(得分:3)

对于第一个问题,请使用:

<%= ResolveUrl("~/Content/fckeditor") %>

答案 1 :(得分:2)

首先,我在页面加载完成后(通过使用window onload事件)完成所有这些工作。这将确保所有控件都已创建并可供使用,其次使用Url.Content方法设置基本路径:

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

这样,应用程序的运行位置无关紧要(http://localhost:PORThttp://dev.someplace.com等)。

答案 2 :(得分:0)

FCK不会使用您应用它的textarea的值来设置内容吗?您不需要从JavaScript填充它,只需在Html.TextArea调用中设置模型中的值。