我有一些問題讓CodeMirror縮進新行開頭的代碼。CodeMirror不縮進代碼
我有一個文本區域,當我點擊保存,是保存到數據庫的代碼是一樣的東西:
<meta charset=\"utf-8\">\r\n\t\t\t<title></title>\r\n\r\n<div class=\"wra ... etc
但是,當我讀了這一點,並在代碼在ASP做後面。 net,ViewCode.Text = dbModel.ViewCode
...即嘗試將該字符串分配給textarea,然後將其轉換爲代碼鏡像編輯器,並在頁面上顯示相關的js,新行開始處的縮進將丟失。如果我在一條線的中間縮進,那麼渲染。
此外,如果有新的行返回,然後是空白行,然後是更多文本,則在讀迴文本區域時,空行會丟失。
注意:textarea是runat服務器來填充數據庫中的值。我曾嘗試使用div和文字,但無法使其工作。
所以,我怎麼能保存的東西,如:
<div>
<b>
test
</b>
</div>
,而不是拿回來像
<div>
<b>
test
</b>
</div>
我相信我一定要對其進行編碼,在保存,但我發誓,我已經嘗試了所有的編碼方法現在工作!大聲笑
任何指針,將不勝感激。
乾杯
羅賓
更新/解決方案
我已經回來把這個,萬一碰到這個職位有一個人絆倒。
基本上我仍然無法得到以下在有問題的特定頁面上很好地播放。即
背後
ViewCode.Value = dbModel.ViewCode
代碼,其中
dbModel.ViewCode
// --> is comes from db as e.g.:
// <meta charset=\"utf-8\">\r\n\t\t\t<title></title>\r\n\r\n<div class=\"wra ... etc
JS(在頁面的結束)
<script>
var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("ViewCode"), {
lineNumbers: true
});
</script>
如果你把同樣的JS代碼,我沒有得到然而工作,是但是,不要在代碼後面填充文本區域。然後,我只需調用一個簡單的ajax方法來獲取數據(在頁面加載時)。
$.ajax({
url: '/WidgetMaint.aspx/GetFileHTML',
type: 'Get',
contentType: 'application/json',
data: { tempid: id },
success: function(result) {
myCodeMirror.setValue(result.d);
}
});
保存和一切完美的作品,因爲textarea的是在服務器仍然運行,所以仍然可以得到它的「上保存的價值,因爲代碼鏡注意到了這一問題。
我相當確信,在我正在做的第一次嘗試中,在代碼鏡像可以及時獲得它之前,還有其他東西正在填充文本和「格式化」它。但是,通過ajax調用,問題消失了,因爲瀏覽器/框架/任何沒有機會訪問DB返回的字符串。它直接饋送到處理它的代碼鏡像的實例。
所以,如果你有一個類似的問題,可能會更容易改變的做法....
乾杯
羅賓
注:接受的答案被Eliran,因爲它給了我這個想法,並upvoted Marjin,因爲該評論證明它的代碼鏡像可以處理縮進...
CodeMirror處理標籤的罰款。例如,在http://codemirror.net/mode/xml/上運行以下代碼就可以實現你所期望的:'editor.setValue(' \ r \ n \所以你應該看看代碼通過的管道的其他部分。 – Marijn
Thx。是的,我認爲它是可以的可以,但我應該用什麼來將它從後面的代碼傳遞到aspx頁面?我的觀點是將該字符串分配給後面代碼中的textarea.value,並且附加代碼鏡像到文本區域不起作用。 ? –
如何從數據庫中獲取文本? –