Razor会自动编码字符串。
但我很困惑如何处理在Razor中生成的JS字符串:
var result = someFunction('@Model.SomeString');
据我所知,Razor将html编码SomeString
,但这并不意味着它将是有效的JS字符串。
我想我可以使用HttpUtility.JavaScriptStringEncode
方法。但是,我应该让Razor进一步包含这个字符串或使用Html.Raw()
?
@{ var str = HttpUtility.JavaScriptStringEncode(Model.SomeString);}
var result = someFunction('@str');
或
var result = someFunction('@Html.Raw(str)');
如果这个字符串随后在JS代码中的某个地方被用作生成的html的内部文本,那么它何时被正确编码以避免注入呢?