如何停止Razors的自动编码

How to stop Razors automatic encode of ?

本文关键字:编码 何停止 Razors      更新时间:2023-09-26

我有一些字符串包含'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(就像应该的那样)。但在我的情况下,它会破坏javascript,我希望它实际显示''n而不是换行符。

有什么可以阻止的吗?通常@Html.Raw对大多数东西来说已经足够了,但对这个来说还不够。

这应该可以做到:

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

它使用HttpUtility.JavaScriptStringEncode,CCD_2应将CR转换为'rLF转换为'nTAB转换为CCD-8

我想在声明字符串常量时,''n会被换行符替换。尝试添加@如下:

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