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

Javascript var with a newline using MVC Model property

本文关键字:使用 MVC Model 属性 var Javascript 换行符      更新时间:2023-09-26

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

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

我的Javascript代码如下:

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

我得到了一个错误,我认为这是由于在注释中包含回车。

Uncaught SyntaxError: Unexpected token ILLEGAL

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

例如,呈现的HTML是:

        var initVal = 'blah blah blah
';

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

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

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

如果用'替换'n字符,对于多行字符串,您将有一个有效的语法。

所以这应该有效
var initVal = '@Model.ReferralHistoryDetail[1].ReferralComments.Replace("'n","''")';

我找到了其他方法来允许javascript中的多行字符串,在这个答案中。

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

或者使用HtmlEncode方法像这样:

var initVal = @Html.Raw(HttpUtility.HtmlEncode(@Model.ReferralHistoryDetail[1].ReferralComments).Replace("'n", "<br />"))

您不能像那样从JavaScript访问Model属性,JavaScript不能对您的模型做任何事情。

在页面上创建一个变量

@{var value=@Model.ReferralHistoryDetail[1]。ReferralComments;

然后访问javascript中的值,尽管不确定为什么您不直接在页面上呈现为什么您需要javascript,除非我缺少