来自数据库的Monaco-Editor单字符串

时间:2017-10-24 23:40:56

标签: html layout line-breaks monaco-editor

过去几天一直在研究但仍然没有结果。我有一个后端数据库,用于保存在Monaco-Editor中输入的文本。但是,如果字符串中有新的行返回(\ r \ n),则不会显示/加载文本。我唯一可以显示的文本是删除行返回。

这是一些客户端代码。

<div id="container" style="width:590px;height:400px;border:1px solid grey;white-space:pre-wrap;"></div>
//saving to hidden value
<input type="hidden" runat="server" id="editorValue" />

   require.config({ paths: { 'vs': '../node_modules/monaco-editor/min/vs' } });

require(["vs/editor/editor.main"], function () {
    var editor = monaco.editor.create(document.getElementById('container'), { 
        value: ['<%=MyJSText%>'].join('\n'),
        language: 'javascript'           
    });

jQuery(document).ready(function ($) {         
        jQuery("#<%=linkOK.ClientID%>").on('click', function () {
        getVal = editor.getValue();
        document.getElementById("<%=editorValue.ClientID%>").value = getVal;
        });
    });

某些服务器端代码

protected string MyJSText
    {
        get
        {
            if (EnableIDEditor)
            {

                return Server.HtmlDecode(TemplateRevision.JsScripts.Replace(Environment.NewLine, " "));

            }
            else 
            {
                return Server.HtmlDecode(TemplateRevision.JsScripts);
            }                    

        }
    }

我希望输入摩纳哥编辑框的文字能够显示换行符。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后通过在服务器端添加以下代码解决了这个问题。

 protected string MyJSText
    {
        get
        {
            if (EnableIDEditor)
            {                    
                return Server.HtmlDecode(TemplateRevision?.JsScripts?.Replace(System.Environment.NewLine, "\\\r\\n"));                    
            }
            else 
            {
                return Server.HtmlDecode(TemplateRevision.JsScripts);
            }                    

        }
    }

诀窍是使用.Replace(System.Environment.NewLine,“\\ r \ n”))并且换行符显示正确。希望这可以帮助那些希望动态插入摩纳哥编辑器的人。