zoukankan      html  css  js  c++  java
  • 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("<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=' "+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的类了,因此我编写了这个接口。

  • 相关阅读:
    Intellij使用心得(四) -- 导入Eclipse的代码格式化文件
    idea安装插件plugin(主要针对网络连接不上的情况)
    IDEA破解方法以及快捷键大全
    eclipse+maven搭建自己web系统的骨架,解决自带骨架加载无限慢的问题
    用Eclipse创建Maven多模块项目
    Maven实战--- dependencies与dependencyManagement的区别
    redis之有序集合类型(Zset)——排行榜的实现
    做一个完整的Java Web项目需要掌握的技能
    经典面试题:用户反映你开发的网站访问很慢可能会是什么原因
    linux 免密码 使用sudo 直接使用root权限执行命令
  • 原文地址:https://www.cnblogs.com/goody9807/p/993597.html
Copyright © 2011-2022 走看看