在MVC中使用FCKEditor提交表单时出现问题

时间:2011-01-31 11:47:07

标签: asp.net-mvc fckeditor

我的MVC项目中的FCKEditor有点奇怪。

我基本上有一个View,它呈现一个包含我的FCKEditor的部分视图(javascript,html和任何其他位以使我的控件可以在我的应用程序中重复使用)

我通过执行以下操作来调用FCKEditor:

<script src="<%= Url.Content("~/Scripts/fckeditor/fckeditor.js") %>" type="text/javascript" ></script>
<script type="text/javascript">
window.onload = function () {
    var sBasePath = '<%= Url.Content("~/Scripts/fckeditor/") %>';

    var oFCKeditor = new FCKeditor('FckEditor1');
    oFCKeditor.BasePath = sBasePath;
    oFCKeditor.ReplaceTextarea();
}
</script>

要验证我的表单,我使用jQuery.Validate并使用以下代码:

    //FORM VALIDATION
    $("#NewPageForm").validate({
        errorContainer: "#errorblock-div1, #errorblock-div2",
        errorLabelContainer: "#errorblock-div2 ul",
        wrapper: "li",
        rules: {
            titleTxt: "required",
            FckEditor1: "required"
        },
        messages: {
            titleTxt: "You must enter a page title.",
            FckEditor1: "You must enter at least some content."
        },
        submitHandler: function (form) {
            form.submit();
        }
    });

在本地,在调试我的项目时,这非常正常,并且当用户将编辑器留空时会向用户抛出错误。

但是,当我发布应用程序并从服务器运行它时,只要编辑器有内容,表单就不会验证,告诉我我的FCKEditor控件是空的,当它显然不是时。

如果我带走了验证,并提交填写了所有相关框的表单,则collection("FckEditor1")的集合也是空的,但同样,每次都在本地运行此工作。

我已经进行了搜索,似乎正在发生的事情是我的文本区域<%= Html.TextArea("FckEditor1", New With {.name = "FckEditor1", .class = "required"})%>没有填充输入FCKEditor的内容,即使这是FCK链接到的框

我尝试过的所有浏览器(IE8和FF)都存在这个问题。

不确定是否还值得注意的是FCK仍然可以正常呈现?

我并不完全相信这是我的代码的问题,因为它在本地运行完美。有什么我需要配置服务器端或web.config可能导致它吗?

是否有其他人遇到过此问题或对如何解决问题有任何想法?

修改

我认为我可以在那里修复。

到目前为止,我添加了以下内容:

    $('#publishBtn').button().click(function () {
        if (typeof (FCKeditorAPI) == "object") {

            FCKeditorAPI.GetInstance("FckEditor1").UpdateLinkedField();

        } else {
            alert('this is not an object!');
        }

        if ($("#FckEditor1").val() == "") {
            alert("FCKEditor is empty");
        } else {
            $("#NewPageForm").submit();
        }
    });

虽然,我现在在提交表单时被发送到空白页面,但我的控制器中没有任何内容似乎是问题 - 至少我不这么认为那里有问题,它会做在我的本地机器上也一样。

3 个答案:

答案 0 :(得分:0)

如果您在服务器上进行验证,可能会导致您的问题的一件事是,一旦它在IIS上,您就无法在没有请求验证的情况下发布HTML内容,从而阻止传递FCKContent。卡西尼不会检查这个,所以它适用于您的本地机器。

尝试将此添加到您发布验证时调用的操作:

[ValidateInput(false)] 
public ActionResult UpdateAction() 
{ 

}

答案 1 :(得分:0)

如果可能,请使用CKEditor;它更好地与MVC集成。

http://ckeditor.com/

http://ckeditor.com/what-is-ckeditor

答案 2 :(得分:0)

我找到了问题的根源,这与我在控制器中处理多个提交按钮的方式有关。

我已经调整了它,现在已经修复了。