我的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();
}
});
虽然,我现在在提交表单时被发送到空白页面,但我的控制器中没有任何内容似乎是问题 - 至少我不这么认为那里有问题,它会做在我的本地机器上也一样。
答案 0 :(得分:0)
如果您在服务器上进行验证,可能会导致您的问题的一件事是,一旦它在IIS上,您就无法在没有请求验证的情况下发布HTML内容,从而阻止传递FCKContent。卡西尼不会检查这个,所以它适用于您的本地机器。
尝试将此添加到您发布验证时调用的操作:
[ValidateInput(false)]
public ActionResult UpdateAction()
{
}
答案 1 :(得分:0)
答案 2 :(得分:0)
我找到了问题的根源,这与我在控制器中处理多个提交按钮的方式有关。
我已经调整了它,现在已经修复了。