0

这两天一直在研究,还是没有结果。我有一个后端数据库,用于保存在 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);
            }                    

        }
    }

我希望输入到 monaco-editor 框中的文本以换行符显示。任何帮助将不胜感激。

4

1 回答 1

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")) 并且换行符显示得当。希望这对希望将文本动态插入到 monaco-editor 的人有所帮助。

于 2017-11-03T22:50:06.177 回答