Asp.net umbraco razor宏在html输出中添加额外返回
我在母版页中有一个宏调用,它根据许多因素(深度、URL路径等)设置主体类。不过,我已经将其剥离,以找出宏为什么在最终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=”的第一个双引号和实际的类字符串之间的额外空间
<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最终输出的地方后面没有分号。)