最近一直在找asp.net2.0環境下的開源的htm文本編輯器,以擴充asp.net站點的文字錄入能力,終於找到了一款網上大家都在討論的FCKeditor。官方網站下載了一份後,用起來非常不方便,網上找了不少資料,費了很大勁才能用。特將經驗總結一下,方便後來者!它支持多種語言,我這裡只介紹ASP.Net2.0環境下的實現。
二、准備工作
FCKeditor包括了編輯器(FCKeditor的編輯器內核,一些支持文件JS,XML等)和ASP.Net引用組件(一個dll)兩部分。首先下載最新版的FCKeditor V2.3.2 編輯器,下載地址:http://sourceforge.Net/project/showfiles.PHP?group_id=75348&package_id=75845;這個壓縮包裡並不包含ASP.Net要用到的DLL控件,所以還要下載另外一個壓縮包,FCKeditor.Net V2.2下載地址:http://sourceforge.Net/project/showfiles.PHP?group_id=75348&package_id=137125 。把第一個文件解壓到我們的asp.net2.0的web項目的根目錄(也可以放在別處,今後設置同步即可),默認文件夾名為:FCKeditor;再把第二個包解壓,裡面包含了源代碼,它是asp.net1.0的,需要用vs2005重新編譯。(如果覺得其功能不夠完善,也可以在此基礎上二次開發哦)。生成的FredCK.FCKeditorV2.DLL供我們在我們的ASP.Net2.0的web項目引用。
三、精簡FCKeditorV2文件 (可以跳過)
因為只用到ASP.Net,所以有必要精簡一下文件。
進入FCKeditor文件夾,把所有“_”開頭的文件和文件夾刪掉,這些都是一些范例,只保留editor文件夾、fckconfig.js、fckeditor.JS、fckstyles.xml、fcktemplates.XML就可以了;
進入editor文件夾,刪掉“_source”文件夾,裡面放的同樣是源文件;
退回上一級目錄進入filemanager文件夾,有browser和upload兩個文件夾。進入browser\default\connectors,只保留aspx文件夾,其余的刪掉;upload也一樣,只保留ASPx文件夾;
lang裡面放的是語言包,如果只是用簡體中文,那麼只保留en.js(英文)、zh-cn.JS兩個文件就行了。
再退出lang文件夾,進入skins文件夾,可以將多余的皮膚主題刪除,看你自己的喜好。
至此,文件精簡完畢。
四、修改FCKeditorV2配置
打開位於根目錄的fckconfig.JS文件。幾個主要設置如下,其他設置自己可以慢慢摸索
FCKConfig.DefaultLanguage = ''en'' ;設置默認語言,把en改成zh-cn,即簡體中文;
FCKConfig.SkinPath = FCKConfig.BasePath + ''skins/default/'' ;這行是設置皮膚的,默認就不用管它了;
FCKConfig.TabSpaces = 0;如果在編輯過程中要用到TAB鍵,就把0改成1;
var _FileBrowserLanguage = ''asp'' ; // asp | aspx | cfm | lasso | perl | PHP | py 默認編程語言,改為ASPx
var _QuickUploadLanguage = ''asp'' ; // asp | aspx | cfm | lasso | PHP 默認編程語言,改為ASPx
五、ASP.Net 2.0配置
Web. Config文件,修改aPPSettings元素,配置如下:
<aPPSettings>
<add key="FCKeditor:BasePath" value="~/FCKeditor/"/>
<add key="FCKeditor:UserFilesPath" value="/MyWeb/Upload" />
</aPPSettings>
解釋:FCKeditor:BasePath是編輯器內核所在的默認目錄,設置了FCKeditor:BasePath後就不用再每次使用FCKeditor實例時指定BasePath屬性了。FCKeditor:UserFilesPath則是指定我們所有上傳的文件的所在目錄。你也許會問為什麼要設置成/ MyWeb/Upload這樣而不是~/Upload(注:MyWeb為我們的web項目的默認的名稱,Upload為根目錄下存放上傳文件的文件夾),因為FCKeditor使用這個值來返回你上傳後的文件的相對路徑到客戶端,~/Upload的形式是ASP.Net在服務可以編譯解釋的,但是在客戶端的靜態就不懂這是什麼了。如果使用~/Upload後,那麼所有上傳文件的返回路徑都是~/Upload形式的,你就會得到這樣的鏈接http://~/Upload/Image/logo.gif這樣的鏈接解果就是路徑為找到。所以才要我們上述那樣設置,這是在開發階段,如果在工程完成後發布時請記住把/MyWeb/Upload改成/Upload,道理不說大家也明白,開發階段VS2005在運行項目時的URL是http://localhost/項目名稱/的形式,發布後在Server上建立站點,跟路徑就是http://www.abc.com/的形式了,所以發布後一定要改過來。
注:如果部署到某一網站的某一目錄下,則要把該目錄名寫上,如部署到http://www.abc.com/web1/下,且上傳文件夾定義為myUp1,則要寫成value="/web1/ myUp1"。
六、ASP.Net 2.0使用
為了方便RAD開發,我們把FCKeditor控件也添加到VS的工具箱(Toolbox)上來,展開工具箱的常用標簽組(General),右鍵選擇組件(Choose Items…),在對話框上直接找到浏覽按鈕,定位FredCK.FCKeditorV2.dll,然後確認就可以了。這樣,工具欄就多了個FCKeditor控件了,直接托拽使用。
另外,確保ASPx中@ Page中的 “validateRequest”置為false,不然當你發表的文章中含有鏈接或是其他Html語句時,.Net會警告你有安全隱患而出錯。(“AutoEventWireup”使用默認值即可)
ASPx中,FCKeditorV2控件還可以定義其語言、路徑等屬性,如<FCKeditorV2:FCKeditor ID="FCKeditor1" runat="server" AutoDetectLanguage="false" DefaultLanguage="zh-cn" BasePath ="~/FCKeditor/"> </FCKeditorV2:FCKeditor>。Cs文件中,取空間的Value屬性,可以得到編輯器中的htm代碼。
七、錯誤原因匯總
控件處顯示:HTTP Error 404 - Not Found.
這個錯誤一般是BasePath沒有設置正確,請參照上文在web.config中或者在FCKeditorV2控件的屬性中設置。
錯誤提示框:XML request error: Forbidden(403)
原因在於沒有配置UserFiles路徑,或者路徑配置用問題。此路徑是需要htm解析的,所以不支持ASP.Net“~”,切記!
錯誤提示框:XML request error: Forbidden(500).
因為ASP.Net2.0新增了Theme功能,所以如果在你的工程中你對Web.config使用到styleSheetTheme或theme的話那就要再多修改一下。還是到FCKeditor所在的目錄,分別打\editor\filemanager\upload\aspx\upload.aspx和\editor\filemanager\browser\default\connectors\aspx\connector.aspx兩個ASPx文件,在page標簽中添加Theme=""或StyleSheetTheme=""如果theme中用到了*.skin,就加上Theme="",如果用到了*.CSS,就加上StyleSheetTheme="":
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" Theme="" %>
或
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" Theme="" StylesheetTheme="" %>
這樣就解決了500的內部錯誤。(說明:Theme=""或StyleSheetTheme="",裡面是空值,不是你的那個theme!!!!)