Asp函数返回一个由换行符和\n

jrcvhitl  于 2023-07-01  发布在  .NET
关注(0)|答案(1)|浏览(140)

我正在将一个asp应用程序从dotnet framework过渡到dotnet core,在这个过程中,我的一些视图开始返回奇怪的返回,其中混合了换行符和\n。
我的代码:

public static async Task<IHtmlContent> InlineStyle(this IHtmlHelper htmlHelper, string componentName)
{
    var styling = await File.ReadAllTextAsync($"wwwroot/css/{componentName}.css");
    return htmlHelper.Raw($"<style>{styling}</style>");
}

我的看法:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>

  @await Html.InlineStyle("document-styles")

  <meta charset="utf-8" />
</head>
...

我的样式表看起来像这样:

body {
    font-size: 18px;
    color: #FFFFFF;
    font-family: "Nunito Sans", Helvetica, Arial, sans-serif;
    line-height: 1;
}

在过去,页面将返回如下:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>

  <style>
    body {
      font-size: 18px;
      color: #FFFFFF;
      font-family: "Nunito Sans", Helvetica, Arial, sans-serif;
      line-height: 1;
    }
  </style>

  <meta charset="utf-8" />
</head>

但现在它返回为:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>

  <style>\nbody {\nfont-size: 18px;\ncolor: #FFFFFF;\nfont-family: "Nunito Sans",\nHelvetica, Arial, sans-serif;\nline-height: 1;\n}\n</style>

  <meta charset="utf-8" />
</head>

浏览器仍然可以正确地呈现它,但是单元测试现在失败了,因为返回的内容无效。我猜这是因为编码,因为我遇到了类似的问题。有谁知道是什么原因导致的吗?

tyu7yeag

tyu7yeag1#

对不起,我不能发表评论(尚未),所以必须张贴作为一个答案。这听起来确实像是一个编码问题,可能有一些原因导致它。我以前也遇到过类似的问题。您是否尝试手动替换新行字符?

public static async Task<IHtmlContent> InlineStyle(this IHtmlHelper htmlHelper, string componentName)
{
    var styling = await File.ReadAllTextAsync($"wwwroot/css/{componentName}.css");
    styling = styling.Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
    return htmlHelper.Raw($"<style>{styling}</style>");
}

相关问题