使用MVC Model属性的换行符的Javascript var

时间:2015-11-12 14:42:04

标签: javascript asp.net-mvc asp.net-mvc-5

我必须将Javascript变量设置为等于我的MVC模型中的属性。

我这样做是为了检测是否对文本框进行了任何更改,这是设置"原始"值。

我的Javascript代码如下所示:

var initVal = '@Model.ReferralHistoryDetail[1].ReferralComments';

我收到一个错误,我认为这是由于在评论中包含回车符。

Uncaught SyntaxError: Unexpected token ILLEGAL

在这种情况下呈现的HTML是将结束引号放在换行符上,这就是开发人员控制台中显示的错误。

例如,呈现的HTML是:

        var initVal = 'blah blah blah
';

处理此问题的正确方法是什么?

4 个答案:

答案 0 :(得分:4)

您希望使用JavaScriptStringEncode命令以兼容javascript的方式对字符串进行编码。

var initVal = '@HttpUtility.JavaScriptStringEncode(Model.ReferralHistoryDetail[1].ReferralComments)';

答案 1 :(得分:0)

您需要创建一个扩展方法,用新标记替换新行字符。

或使用方法HtmlEncode  像这样:

IEEE-754 floating points

答案 2 :(得分:0)

如果您将git reset HEAD字符替换为\n, 你将拥有多行字符串的有效语法。

那应该工作了 \

我发现在javascript中允许多行字符串的其他方法, 在this回答。

答案 3 :(得分:-1)

您无法像这样从JavaScript访问模型属性,JavaScript无法对您的模型执行任何操作。

在页面上创建变量

  

@ {var value = @ Model.ReferralHistoryDe​​tail [1] .ReferralComments;

然后在javascript中访问值,虽然不确定为什么你不直接在页面上呈现为什么你需要javascript,除非我遗漏了什么