2013-04-12 61 views
0

我目前使用CKEditor來讀取並顯示html文件的內容。讀取html文件並在CKEditor中顯示

但是,我不是獲取文件的內容,而是獲取的是一個字符串:< html>在編輯器中顯示。

但是,如果我使用response.write直接將內容寫入頁面,則文件的所有內容都會正確顯示。

這是代碼片段我用來讀取文件:

strPathToConvert = Server.MapPath("~/convert/"); 
    object filetosave = strPathToConvert + "paper.htm"; 
    StreamReader reader = new StreamReader(filetosave.ToString()); 
    string content = ""; 
    while ((content = reader.ReadLine()) != null) 
    { 
     if ((content == "") || (content == " ")) 
     { continue; } 
     CKEditor1.Text = content; 
     //Response.Write(content); 
    } 

任何人可以幫助我解決這個問題呢? 非常感謝。

+0

這應該工作,你得到任何JavaScript錯誤或什麼? –

+0

不,我沒有得到任何錯誤,只是字符串:顯示在CKEditor中,而使用response.write時,所有文件的內容直接顯示在頁面上。我今天做了很多搜索,但沒有找到解決方案。 – nghich1

+0

你可以嘗試一些實驗。如果將其硬編碼爲「 asfd」或「blablablablalabla」,請查看顯示內容。這可能是你需要在設置控件之前對HTML進行編碼 –

回答

0

您位於while循環中,因爲您使用=而不是+=,所以每次都覆蓋CKEditor的內容。你的循環應該是:

StreamReader reader = new StreamReader(filetosave.ToString()); 
string content = ""; 
while ((content = reader.ReadLine()) != null) 
{ 
    if ((content == "") || (content == " ")) 
    { continue; } 
    CKEditor1.Text += content; 
    //Response.Write(content); 
} 

一個更好的辦法很可能是使用

string content; 
string line; 
using (StreamReader reader = new StreamReader(filetosave.ToString()) 
{ 
    while ((line= reader.ReadLine()) != null) 
    { 
     content += line; 
    } 
} 
CKEditor1.Text = content; 
+0

不錯,我甚至沒有注意到,一次只讀一行HTML :-) –

+0

這很好。但我曾嘗試過你的第一種方法,但它沒有奏效。但現在它正在工作。 – nghich1

相關問題