在从 @model 拉取的 MVC 视图中的变量中使用 javascript \r\n\

using the javascript \r\n\ in a variable in an MVC view pulling from the @model

我正在尝试为 Ace(Ajax.org Cloud9 编辑器)设置正确的格式,所以我正在解析从 MVC 视图中的@Model 拉出的 Json,如下所示:

var model = JSON.stringify(@Html.Raw(Json.Encode(Model)));

var comma = model.replace(/,/g, ",\r\n");
var curlyBracket = comma.replace(/{/g, "{\r\n");
var colonCurlyBracket = bracket.replace(/:{/g, ':\r\n\{');
var bracketCurlyBracket = colonCurlyBracket.replace(/:\[{/g, ':\r\n\[{');

editor.setValue(bracketCurlyBracket, -1);

问题是这没有做任何缩进来保持格式正确,它只是放置回车符 returns 和新行。我尝试使用:

var comma = model.replace(/,/g, ",\r\n\"); 
var curlyBracket = comma.replace(/{/g, "{\r\n\"); 
var colonCurlyBracket = bracket.replace(/:{/g, ':\r\n\{'); 
var bracketCurlyBracket = colonCurlyBracket.replace(/:\[{/g, ':\r\n\[{');

但是额外的“\”在前两行给我错误 "Unterminated string constant",在后两行它只是向编辑器添加了一个“\”。我需要这些行继续,以便缩进和格式化工作。我该怎么做?

感谢詹姆斯,这里是答案:

JSON.stringify 的第三个参数完成了正确格式化的任务,因此它应该如下所示:

var model = JSON.stringify(@Html.Raw(Json.Encode(Model)), null, ' ');
editor.setValue(model, -1);

第三个参数(' ')带空格,空格的个数决定了缩进的个数(即3个空格=3个缩进):

"filters": [
            {
                "id": "LastName",
                "label": "LastName",
                "type": "string",
                "operators": [
                    "equal",
                    "not_equal",
                    "begins_with",
                    "not_begins_with",
                    "contains",
                    "not_contains",
                    "ends_with",
                    "not_ends_with"
                ]
            }
           ]

希望这对其他人有帮助。