如何停止Razors自动编码\ n?

时间:2014-10-28 08:18:23

标签: javascript c# asp.net-mvc razor

我有一些包含\n的字符串,例如:

ViewBag.stringTest = "Hello\nWorld!\nBreakrow";

我想在我的视图中使用,在我的javascript中更具体

$(document).ready(function () {
   var howItShouldBe = "Hello\nWorld!\nBreakrow";

   var stringTest1 = "@ViewBag.stringTest";
   var stringTest2 = "@Html.Encode(ViewBag.stringTest)";
   var stringTest3 = "@(new HtmlString(ViewBag.stringTest))";
   var stringTest4 = "@Html.Raw(ViewBag.stringTest)";
   var stringTest5 = "@MvcHtmlString.Create(ViewBag.stringTest)";
   var stringTest6 = "@ViewBag.stringTest.ToString()";
});

但是当使用@ razor时,它会将\ n替换为实际的breakrows / linebreaks(喜欢它 kinda 应该)但是在我的情况下它打破了javascript并且我希望它实际显示\ n而不是做线路。

有没有阻止这个?通常@ Html.Raw足够大多数东西,但不是这个。

2 个答案:

答案 0 :(得分:1)

我认为在声明字符串常量时,\ n会被换行符替换。尝试像这样添加@:

ViewBag.stringTest = @"Hello\nWorld!\nBreakrow";

答案 1 :(得分:1)

这应该可以解决问题:

"@Html.Raw(HttpUtility.JavaScriptStringEncode(s.Name))"

它使用HttpUtility.JavaScriptStringEncode,应将CR转换为\r,将LF转换为\n,将TAB转换为\t < / p>