1、CKEditor原名FckEditor,著名的HTML编辑器,可以在线编辑HTML内容。自己人用CKEditor,网友用UBBEditor。
配置参考文档,主要将ckeditor中的(adapters、images、lang、plugins、skins、themes、ckeditor.js、config.js、contents.css)解压到js目录,然后“显示所有文件”,将ckeditor的目录“包含在项目中”,在发帖页面引用ckeditor.js,然后设置多行文本框的class=\"ckeditor\"(CSS强大)(服务端控件CssClass=\" ckeditor \",客户端控件要设定cols、rows属性,一般不直接用html控件),代码中仍然可以通过TextBox控件的Text属性来访问编辑器内容。
由于页面提交的时候asp.net会把富文本编辑器中的html内容当成攻击内容,因此需要在aspx中的Page标签中设置 ValidateRequest=\"false\" 来禁用攻击检测(2010中还要根据报错信息修改WebConfig来禁用XSS检测)。
遇到错误如下:
**修改WebConfig来禁用XSS检测
当asp.net提交“<>”这些字符到aspx页面时,如果没有在文件头中加入“ValidateRequest=\"false\"”这句话,就会出现出错提示:从客户端(<?xml version=\"...=\'UTF-8\'?><SOAP-ENV:Envelope S...\")中检测到有潜在危险的Request.Form 值。
如你是vs2008的用户,只要在aspx文件的开始部分,如下文所示处:
<%@ Page Language=\"C#\" CodeBehind=\"News_add.aspx.cs\" Inherits=\"CKEditor.Default\" %>加上ValidateRequest=\"false\" 即可。
但是如果是VS2010,仅仅这样还是不够的。还需要双击打开web.config,在<system.web></system.web>之间添加下面语句
<pages validateRequest=\"false\" />
<httpRuntime requestValidationMode=\"2.0\" />
2、CKFinder是一个CKEditor插件,用来为CKEditor提供文件的上传的功能。将bin\\Release下的CKFinder.dll添加到项目的引用;将core、ckfinder.js、ckfinder.html、config.ascx解压到CKFinder自己的目录。按照文档修改CKEditor的config.js,将上传的处理程序设定为CKFinder,注意路径的问题。
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = \'fr\';
// config.uiColor = \'#AADC6E\';
//改成ckfinder的绝对路径,从网站的本目录开始
var ckfinderPath = \"/admin/js\";
config.filebrowserBrowseUrl = ckfinderPath + \'/ckfinder/ckfinder.html\';
config.filebrowserImageBrowseUrl = ckfinderPath + \'/ckfinder/ckfinder.html?Type=Images\';
config.filebrowserFlashBrowseUrl = ckfinderPath + \'/ckfinder/ckfinder.html?Type=Flash\';
config.filebrowserUploadUrl = ckfinderPath + \'/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files\';
config.filebrowserImageUploadUrl = ckfinderPath + \'/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images\';
config.filebrowserFlashUploadUrl = ckfinderPath + \'/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash\';
};
使用测试,在插入超链接、插入图片、插入文件中都有“上传”l 因为上传文件是非常危险的动作,因此在文件上传的时候会进行权限校验。在config.ascx的CheckAuthentication方法中校验是否有权限上传,返回true表示有权限,否则没有权限,一般修改成判断用户是否登录,并且登录用户是有上传权限的用户,可以用Session或者Membership来做。
public override bool CheckAuthentication()
{
// WARNING : DO NOT simply return \"true\". By doing so, you are allowing
// \"anyone\" to upload and list the files in your server. You must implement
// some kind of session validation here. Even something very simple as...
//
// return ( Session[ \"IsAuthorized\" ] != null && (bool)Session[ \"IsAuthorized\" ] == true );
//
// ... where Session[ \"IsAuthorized\" ] is set to \"true\" as soon as the
// user logs on your system.
object obj = Session[\"已经登录\"] = true;
if (obj!=null&Convert.ToBoolean(obj)==true)
{
return true;
}
else
{
return false;
}
}
思考:如何实现只有指定IP地址的用户才能上传?
if (Request.UserHostAddress == \"129.0.0.0.1\") { return true; }
在SetConfig函数中设置上传文件夹的位置BaseUrl、缩略图的位置,每种类型数据的上传路径、允许上传的文件类型AllowedExtensions等。