未捕获的SyntaxError:带有Html.TextAreaFor的意外标记ILLEGAL

时间:2016-04-30 18:30:59

标签: javascript razor

我的代码
{

  var textarea='@Html.TextAreaFor(m=>m.Content)'
    $('#boxPhanThuong').append(textarea);

}

在控制台中我有:

我不知道如何修复它。 Html.textboxbor或dropdownlistfor很好,但Html.textareafor不是。

1 个答案:

答案 0 :(得分:0)

给予浏览器的Html.TextAreaFor(m=>m.Content)输出可能包括换行符。

简单示例:

var textarea='<textarea id="Content">
</textarea>';

而且,在JavaScript中,字符串文字不允许逐字包含换行符。他们必须逃脱,Razor不会为你做的。

然而,您可以利用JavaScript和JSON的相似性以及Json.Encode()来输出标记,以便JavaScript理解它。但是,这需要额外的设置:

var textarea=@Html.Raw(Json.Encode(Html.TextAreaFor(m => m.Content).ToHtmlString()));

其他补充是:

  • .ToHtmlString()提供Json.Encode() string而不是object
  • Html.Raw()阻止Json.Encode()成为HTML编码的结果 - &quot;&lt;textarea ... - 因为<script>无法理解这些结果。

对于简单的例子,结果如下:

var textarea="<textarea id=\"Content\">\n</textarea>";