首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > .NET专栏 > 正文
  • ASP.Net程式中调用FCKeditor接口
      2008-5-1  来源:博客网  编辑:Jsbulo  热度:

      在官方默认的版本中,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
     
    {
      
    getreturn sBasePath; }
      
    set{ sBasePath = value; }
     }


     
    public string InstanceName
     
    {
      
    getreturn sInstanceName; }
      
    set{ sInstanceName = value; }
     }


     
    public string Width
     
    {
      
    getreturn sWidth; }
      
    set{ sWidth = value; }
     }


     
    public string Height
     
    {
      
    getreturn sHeight; }
      
    set{ sHeight = value; }
     }


     
    public string ToolbarSet
     
    {
      
    getreturn sToolbarSet; }
      
    set{ sToolbarSet = value; }
     }


     
    public string Value
     
    {
       
    getreturn 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(
    "");
        }

        
    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(
    "  {
      
    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的类了,因此我编写了这个接口。