2017-12-02 368 views
0

我有以下代码:@ Html.Raw - 换行符分配给JSON对象时丢失

data: { 
      comment: { 
       'id': @Model.Id, 
       'description': "@Html.Raw(Model.Description)" 
      }, 

     }, 

但我得到以下错误控制台:

Uncaught SyntaxError: Invalid or unexpected token 

的误差源在突出铬开发工具显示如下:

data: { 
      comment: { 
       'id': 1, 
       'description': "<p>Test</p> 

    <p>Testing</p> 
    ", 
      } 
     }, 

错误是在说明属性。我认为它没有\n正在增加此属性的值,这是抛出错误。

我该如何解决?

回答

0

这是否适合您?

@Html.Raw(HttpUtility.HtmlEncode(Model.Description).Replace("\n", "<br/>")) 
0

它看起来就像你正在试图通过一个MVC视图生成JSON输出。你可能会成功,但你也会使它比需要的复杂得多,而且做错了的风险很大。你刚刚经历过这种风险!

您可能会遇到的下一个问题是,根据JSON标准,所有字段必须用双引号包围,而不是单引号。谁知道你接下来会遇到什么。

更好的是使用MVC的力量,并让它为您呈现JSON输出。你根本不需要MVC Views来获取JSON输出,只需要一些编写良好的Controller代码,而MVC会将它变成适合你的JSON。

这是你的控制器的操作方法将需要什么样子:

public ActionResult MyAction(....) 
{ 
    var modelObj = .... // data retrieval code here 
    var resultObj = new 
    { 
     data = new 
     { 
      comment = new 
      { 
       id = modelObj.Id, 
       description = modelObj.Description 
      } 
     } 
    }; 
    return Json(resultObj); 
}