技术开发 频道

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


【IT168技术文档】

  在官方默认的版本中,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>

0
相关文章