@ Html.Raw - 分配给json对象时缺少换行符

时间:2017-12-02 17:34:37

标签: json asp.net-mvc razor html-encode

我有以下代码:

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

        },

但是我在控制台中收到以下错误:

Uncaught SyntaxError: Invalid or unexpected token

chrome dev工具中突出显示的错误源显示如下:

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

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

错误在description属性上。我认为,因为这个属性的值会引发错误而没有添加\n

我该如何解决?

2 个答案:

答案 0 :(得分:0)

这对你有用吗?

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

答案 1 :(得分:0)

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

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

更好的是使用MVC 的强大功能,并让它为您呈现JSON输出。您根本不需要MVC视图来获取JSON输出,只需要一些编写良好的Controller代码,MVC会将它转换为适合您的JSON。

以下是您的Controller操作方法需要的样子:

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);
}