CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站。不过目前还没找到 .net版本所以自己写了一个控件和大家分享下.集成ckfinder
不过本人在UpdatePanel 使用ckeditor会出现 点任何一个提交按钮后,发现CKEditor工具栏都没有了,并且CKEditor也处于不可用的状态了。希望高手能够提供解决方法
下面是本人写的一段代码:
/********************************************************************************************
* 文件名称: CKeditor
* 设计人员: www.gkxsn.com
* 设计时间: 2009/12/31 13:02:20
* 功能描述:
* CLR 版本: 2.0.50727.4927
*
*
* 注意事项:
*
* 版权所有: Copyright (c) 2009,
*
* 修改记录: 修改时间 人员 修改备注
* ---------- ------ -------------------------------------------------
*
********************************************************************************************/
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace www.gkXsn.com
{
/// <summary>
/// CKeditor
/// </summary>
[DefaultProperty("Text")]
[ToolboxData("<{0}:CKeditor runat=server></{0}:CKeditor>")]
public class CKeditor : WebControl, INamingContainer
{
#region 脚本
/// <summary>
/// ckfinder脚本指定
/// </summary>
private const string CKEDITORJAVASCRIPT = @"
<script type='text/javascript'>
//<![CDATA[
CKEDITOR.replace('{0}',
{{
skin: '{1}',
toolbar: '{2}',
enterMode: Number({3}),
shiftEnterMode: Number({4}),
filebrowserBrowseUrl: '{5}ckeditor/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl: '{5}ckeditor/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl: '{5}ckeditor/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl: '{5}ckeditor/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '{5}ckeditor/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl: '{5}ckeditor/ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash'
}});
//]]>
</script> ";
/// <summary>
/// ckeditor.js脚本指定
/// </summary>
private const string CKEDITORJS = @" <script language='javascript' src='{0}ckeditor/ckeditor.js' type='text/javascript'></script> ";
#endregion
/// <summary>
/// 文本
/// </summary>
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
return mckeditor.Text;
}
set
{
mckeditor.Text = value;
}
}
/// <summary>
/// 脚本文件路径
/// </summary>
public string ScriptPath
{
get
{
String s = (String)ViewState["ScriptPath"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["ScriptPath"] = value;
}
}
/// <summary>
/// 工具栏配置
/// </summary>
public string Toolbar
{
get
{
String s = (String)ViewState["Toolbar"];
return ((s == null) ? "Full" : s);
}
set { ViewState["Toolbar"] = value; }
}
/// <summary>
/// Enter按钮输入的字符
/// </summary>
public string EnterMode
{
get
{
String s = (String)ViewState["EnterMode"];
return ((s == null) ? "2" : s);
}
set { ViewState["Toolbar"] = value; }
}
/// <summary>
/// Shift+Enter按钮输入的字符
/// </summary>
public string ShiftEnterMode
{
get
{
String s = (String)ViewState["ShiftEnterMode"];
return ((s == null) ? "1" : s);
}
set { ViewState["ShiftEnterMode"] = value; }
}
/// <summary>
/// 皮肤
/// </summary>
public string Skin
{
get
{
String s = (String)ViewState["Skin"];
return ((s == null) ? "kama" : s);
}
set { ViewState["Skin"] = value; }
}
public TextBox mckeditor = new TextBox();
protected override void CreateChildControls()
{
this.Controls.Clear();
String format = String.Format(CKEDITORJS, this.ScriptPath);
this.Controls.Add(new LiteralControl(format));
mckeditor.ID = "mckeditor";
mckeditor.TextMode = System.Web.UI.WebControls.TextBoxMode.MultiLine;
this.Controls.Add(mckeditor);
string script = string.Format(CKEDITORJAVASCRIPT, mckeditor.ClientID, Skin, Toolbar, EnterMode, ShiftEnterMode, this.ScriptPath);
this.Controls.Add(new LiteralControl(script));
}
protected override void Render(HtmlTextWriter output)
{
this.CreateChildControls();
base.Render(output);
}
}
}