Ⅰ、安装部署篇
首先从官网下载FCKeditor3.6.4(asp.net)
其实当前最新版是4.1.1的,但没有教程不会安装,所以下了这个版本的
具体安装方法我这里不详述了,可以网上搜3.6.1的安装方法就行。我就是按这个装的。3.6.4版本的安装方法我百度是没找到。。。
安装部署方法参考网址:http://www.cnblogs.com/px7034/archive/2011/11/28/2266411.html
还有一个参考网址,这个是我后来才发现的,并没有参考,只是看了下,感觉挺详细的
http://zhidao.baidu.com/question/328638154.html
1、把_samples文件夹里的ckeditor文件夹拷贝到你的项目文件夹里
2、然后在MVC2项目的“引用"文件夹上右击来添加引用。
路径是ckeditor_aspnet_3.6.4\bin\Release\CKEditor.NET.dll
3.在配置文件中添加
<system.web>
<pages>
<controls>
<add tagPrefix="CKEditor" assembly="CKEditor.NET" namespace="CKEditor.NET"/>
</controls>
</pages>
</system.web>
4.在应用到ckeditor的页面引入
<%@Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor"%>
5.在母版页或是引用FCKeditor的页面中,把ckeditor文件夹里的ckeditor.js引入进来。就是<script>标签引入方式。(这条他貌似没提到)
6.在需要用到ckeditor的地方加入
<CKEditor:CKEditorControl ID="CKEditor1" runat="server"></CKEditor:CKEditorControl>
当然这只是一种方法,还有一种是:
添加标签<textarea id="Body1" name="Body1" rows="2" cols="9"></textarea>
rows和cols属性必须要有,不然这个textarea标签报错,我的VS2010里是这样的情况
然后新建js文件,里面写个当前页面加载时自动执行的方法,我是用JQuery写的,记得引用JQuery的包,不然报"$未定义”错误
$(function ()
{
CKEDITOR.replace("Body1");
});
Ⅱ、用JS设置和获取FCKeditor的值,并传递到控制器中
首先我不知道该怎样用js直接把获取到的值传递给控制器,所以我用了个比较绕远的方法来实现的。
先在引用FCKeditor的页面里添加一个隐藏域:<%:Html.Hidden("FCK")%>
然后在js文件里写一个方法
function getValueToHidden()
{
document.getElementById("FCK").value = CKEDITOR.instances.Body1.getData();
}
这个方法的功能是把获取到的FCKeditor里的值传递给隐藏域,为隐藏域赋值。
这个方法我是在提交按钮的onclick事件里触发的,οnclick="getValueToHidden()"
这样隐藏域里就有了值,然后在Controller中写个方法来接收隐藏域里的值。
eg:
public ActionResult Post(string FCK)
{
方法体(略);
}
注意参数的名字必须和隐藏域里定义的名字一样,不然获取不到隐藏域里的值。
mvc里好像有个机制能够实现同名自动绑定,具体我也不是太清楚。这里只是提一下。
这样方法就能接收到FCKeditor里的值了,当然这还不完善。(有几个提前步骤我放到下面了,到这里应该还获取不到值,因为会报异常的。)
Ⅲ、解决“检测到有潜在危险的 Request.Form 值.”异常问题
上面的方法传递FCKeditor值时应该会报“xxxxxx检测到有潜在危险的 Request.Form 值.”这个异常,解决的方法很简单,当然这个方法不是完美的,我是为了赶时间先临时用的这种解决方法。
解决方法1:
参考网址:http://zhidao.baidu.com/question/227945060.html
1.在接收的方法上面加上[ValidateInput(false)]
2.在项目中最外面那个web.config中的system.web节点里面加上<httpRuntime requestValidationMode="2.0"/>
解决方法2:
参考网址:http://www.cnblogs.com/UouHt/archive/2008/10/30/1322697.html
这种方法主要是用replace()来替换FCKeditor里的标签符号“<”和“>”,我感觉比较好,但我这里经常出问题,为了赶时间就没用这种方法。
以上就是我这几天来用FCKeditor的一些心得体会,希望能帮助后来人!