Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net umbraco razor宏在html输出中添加额外返回_Asp.net_Razor_Umbraco - Fatal编程技术网

Asp.net umbraco razor宏在html输出中添加额外返回

Asp.net umbraco razor宏在html输出中添加额外返回,asp.net,razor,umbraco,Asp.net,Razor,Umbraco,我在母版页中有一个宏调用,它根据许多因素(深度、URL路径等)设置主体类。不过,我已经将其剥离,以找出宏为什么在最终html中添加额外空间 母版页宏行: <body class="<umbraco:Macro Alias="Bodyclass" runat="server"></umbraco:Macro>"> 返回: <body class=" front"> 注意class=”的第一个双引号和实际的类字符串之间的额外空间

我在母版页中有一个宏调用,它根据许多因素(深度、URL路径等)设置主体类。不过,我已经将其剥离,以找出宏为什么在最终html中添加额外空间

母版页宏行:

    <body class="<umbraco:Macro Alias="Bodyclass" runat="server"></umbraco:Macro>">
返回:

    <body class="
front">


注意class=”的第一个双引号和实际的类字符串之间的额外空间。

尝试使用Html.Raw输出Html。 比如:

@{
  var bodyClass = "";
  if(...)
  { 
    bodyClass = "front"; 
  } 
  else 
  {
    bodyClass = "not-front";  
  }

  @(Html.Raw(@bodyClass));

}

在只返回值的地方尝试它。

删除额外的换行符

确保在宏代码之前或之后没有额外的新行。您可能希望在文本编辑器中打开cshtml文件进行检查。在我的一端(使用v4.8)进行一些测试后,这是我能找到的添加额外新行的唯一条件。使用razor注释(
@*.*.*
)之前的代码还将添加一个换行符


备选方案

将类添加到标记的另一种选择是使用razor编写标记,如下所示:

<umbraco:Macro language="cshtml" runat="server">
@{
    string bodyClass = "not-front";

    if ((Model.NodeTypeAlias == "WLHomePage" ) ||
        (Model.NodeTypeAlias == "WLHomeSubPage" ))
    {
        bodyClass = "front";
    }

    @:<body class="@bodyClass">
}
</umbraco:Macro>

    ...

</body>
   @{ var bodyClass = "";

@{
字符串bodyClass=“非前”;
如果((Model.NodeTypeAlias==“WLHomePage”)||
(Model.NodeTypeAlias==“WLHomeSubPage”))
{
bodyClass=“前”;
}
@:
}
...

我的.NET开发伙伴破解了这个问题:第一行是空白。向上移动变量,如下所示:

<umbraco:Macro language="cshtml" runat="server">
@{
    string bodyClass = "not-front";

    if ((Model.NodeTypeAlias == "WLHomePage" ) ||
        (Model.NodeTypeAlias == "WLHomeSubPage" ))
    {
        bodyClass = "front";
    }

    @:<body class="@bodyClass">
}
</umbraco:Macro>

    ...

</body>
   @{ var bodyClass = "";
和>噗<空白消失了

这是翁布拉科的臭虫吗


谢谢大家!

cast01谢谢,但我之前和现在都试过了。同样的结果。不过谢谢你的想法。拉斯穆斯峡湾:谢谢。我也有这个想法。我已经试过了,无论添加什么返回,都只会在那一点上添加它。奇怪。我做了完全相同的事情(将自定义类名添加到body标记)一直以来,我都没有遇到任何额外空格的问题。也许宏中没有显示的其他内容可能是错误的?(尽管一个区别是@bodyClass最终输出的地方后面没有分号。)