ASP.Net程式中调用FCKeditor接口


在官方默认的版本中,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("
");
 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("");
 
  HttpContext.Current.Response.Write("");
 
  HttpContext.Current.Response.Write("");
  }
  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(""+HttpContext.Current.Server.HtmlEncode(sValue)+"");
  }
 HttpContext.Current.Response.Write("
");
 }
  
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();
FCKeditor.BasePath = "./FCKeditor/";
FCKeditor.Width = "100%";
FCKeditor.Height = "400";
FCKeditor.ToolbarSet = "Basic";
FCKeditor.Create("body");
%>

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

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3