ASP.Net程式中调用FCKeditor的接口

转载 2006年05月25日 23:13:00

在官方默认的版本中,FCKeditor是不支持asp.net的(没有供asp.net调用的接口),不过有一个供asp调用的接口,我根据fckeditor.asp这个文件用C#改写了一个.Net的接口,大家有需要可以参考。

<script language="c#" runat="Server">
public class FCKeditor
{
 private string sBasePath;
 private string sInstanceName;
 private string sWidth;
 private string sHeight;
 private string sToolbarSet;
 private string sValue;

 private ArrayList oConfig;

 public FCKeditor()
 {
  sBasePath  = "/admin/FCKeditor/";
  sWidth   = "100%";
  sHeight   = "200";
  sToolbarSet  = "Default";
  sValue   = "";
  oConfig = new ArrayList();
 }

 public string BasePath
 {
  get{ return sBasePath; }
  set{ sBasePath = value; }
 }

 public string InstanceName
 {
  get{ return sInstanceName; }
  set{ sInstanceName = value; }
 }

 public string Width
 {
  get{ return sWidth; }
  set{ sWidth = value; }
 }

 public string Height
 {
  get{ return sHeight; }
  set{ sHeight = value; }
 }

 public string ToolbarSet
 {
  get{ return sToolbarSet; }
  set{ sToolbarSet = value; }
 }

 public string Value
 {
   get{ return sValue; }
  set{ sValue = value; }
 }

 public void Config(string configKey, string configValue)
 {
  oConfig.Add(new DictionaryEntry(configKey, configValue));
 }

 public void Create(string instanceName)
 {
  HttpContext.Current.Response.Write("<div>");
  if(IsCompatible())
  {
   string sFile="";
   string sLink="";
   if(HttpContext.Current.Request["fcksource"] == "true"){ sFile = "fckeditor.original.html";}
   else{ sFile = "fckeditor.html"; }

   sLink = sBasePath + "editor/" + sFile + "?InstanceName=" + instanceName;

   if(sToolbarSet != "") sLink = sLink + "&Toolbar="+sToolbarSet;

   HttpContext.Current.Response.Write("<input type='hidden' id='" + instanceName + "' name='" + instanceName + "' value='" + HttpContext.Current.Server.HtmlEncode( sValue ) + "' style='display:none' />");
  
   HttpContext.Current.Response.Write("<input type='hidden' id='"+instanceName+"___Config' value='"+GetConfigFieldString()+"' style='display:none' />");
  
   HttpContext.Current.Response.Write("<iframe id='"+instanceName+"___Frame' src='"+sLink+"' width='"+sWidth+"' height='"+sHeight+"' frameborder='no' scrolling='no'></iframe>");
    }
    else
    {
   string sWidthCSS="";
   string sHeightCSS="";
  
   if(sWidth.IndexOf('%')!=-1){ sWidthCSS = sWidth; }
   else{ sWidthCSS = sWidth+"px"; }

   if(sHeight.IndexOf('%')!=-1){ sHeightCSS = sHeight; }
   else{ sHeightCSS = sHeight+"px"; }

   HttpContext.Current.Response.Write("<textarea name='"+instanceName+"' rows='4' cols='40' style='width: "+sWidthCSS+"; height: "+sHeightCSS+"'>"+HttpContext.Current.Server.HtmlEncode(sValue)+"</textarea>");
   }
  HttpContext.Current.Response.Write("</div>");
  }

 private bool IsCompatible()
  {
  string sAgent = HttpContext.Current.Request.UserAgent;
  double iVersion;
  bool iIsCompatible = false;
  if( sAgent.IndexOf("MSIE") !=-1 &&
      sAgent.IndexOf("mac") ==-1 &&
  sAgent.IndexOf("Opera") == -1)
  {
   try{ iVersion = Convert.ToDouble(sAgent.Substring(sAgent.IndexOf("MSIE")+4,4).Trim()); }
   catch{ iVersion=0; }
   iIsCompatible = ( iVersion >= 5.5 );
  }
  else
  { iIsCompatible = false; }
    return iIsCompatible;
  }

 private string GetConfigFieldString()
 {
  string sParams="";
  bool bFirst = true;
  foreach(DictionaryEntry de in oConfig)
  {
   if(bFirst == false){ sParams = sParams+"&"; }
   else{ bFirst = false; }
   sParams = sParams+EncodeConfig( de.Key.ToString() )+ "=" +EncodeConfig( de.Value.ToString() );
   }
  return sParams;
  }
 
 private string EncodeConfig( string valueToEncode )
 {
  string sEncodeConfig;
  sEncodeConfig = valueToEncode.Replace("&", "%26" );
  sEncodeConfig = sEncodeConfig.Replace("=", "%3D" );
  sEncodeConfig = sEncodeConfig.Replace("'", "%22" );
  return sEncodeConfig;
 }
}
</script>

使用方法:

<%
string sBasePath = Request.ServerVariables["PATH_INFO"];
FCKeditor oFCKeditor = new FCKeditor();
oFCKeditor.BasePath = "./FCKeditor/";
oFCKeditor.Width = "100%";
oFCKeditor.Height = "400";
oFCKeditor.ToolbarSet = "Basic";
oFCKeditor.Create("body");
%>

此外,这个编辑器的asp.net用的文件上传和浏览程序也是没有的,不过可以在配置文件里把asp设置为默认脚本语言就行了,一般支持asp.net的服务器都支持asp的,不过asp.net的程序就不可能直接调用asp的类了,因此我编写了这个接口。

 

ASP.Net程式中调用FCKeditor的接口

在官方默认的版本中,FCKeditor是不支持asp.net的(没有供asp.net调用的接口),不过有一个供asp调用的接口,我根据fckeditor.asp这个文件用C#改写了一个.Net的接口,...
  • goody9807
  • goody9807
  • 2008年04月24日 16:38
  • 563

FCKeditor For ASP.Net 文本编辑器使用

从官方网站http://sourceforge.net/projects/fckeditor/files/下载最新版的Fckeditor。 需要下载FCKeditor2.X .X,当前的最新版本...
  • qbook
  • qbook
  • 2014年11月19日 14:27
  • 1052

FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)

用了FCKeditor以后才知道,在性能上确实是挺优越的,特别是在加载的速度上,远比其它的编辑器要来得快,而且跨语言跨平台,也不会像FreeTextBox那样在页面中加入一大堆的ViewState视图...
  • conanlwl
  • conanlwl
  • 2007年05月26日 19:55
  • 7505

FCKeditor在java web程序中的使用介绍

FCKeditor的使用                                                     ++YONG原创,转载请注明 引:最近在做一个BLOG演示程序,用到了...
  • qjyong
  • qjyong
  • 2007年06月20日 10:32
  • 7172

Fckeditor使用方法

测试Fckeditor版本为:2.6.3 JS代码中各个参数具体作用 var oFCKeditor = new FCKeditor( 'content' ) ;//此参数会作为提交表单时的参数...
  • v123411739
  • v123411739
  • 2014年04月25日 23:19
  • 13912

fckeditor组件使用---fckeditor调用的三种方法1

FckEditor的调用: 方法一:直接用JavaScript调用: script type="text/javascript" src="fckeditor/fckeditor.js">sc...
  • lidew521
  • lidew521
  • 2013年01月20日 20:10
  • 1006

jsp与FCKeditor配置使用说明

前言:FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文...
  • u012385190
  • u012385190
  • 2016年05月10日 20:34
  • 1429

修改FCKEditor实现将图片、文件等保存到数据库

FCKEditor是开源的富文本编辑器,其免费、跨浏览器跨平台的特点使得其在项目中得到了广泛的应用。但是FCKEditor的附件(文件、图片、Flash等)是上传保存到Web服务器的,在只有一台Web...
  • studyzy
  • studyzy
  • 2013年09月10日 14:21
  • 880

Jsp页面中使用fckeditor控件的两种方法

fckeditor控件请到官方网站下载[url]http://www.fckeditor.net[/url],本例主要用到FCKeditor_2.6.3.zip、fckeditor-java-demo...
  • u014630260
  • u014630260
  • 2016年09月20日 18:02
  • 529

实例讲解asp.net 接口的作用(好处)

继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的   1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类 《...
  • xmlife
  • xmlife
  • 2013年03月16日 10:55
  • 991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.Net程式中调用FCKeditor的接口
举报原因:
原因补充:

(最多只允许输入30个字)