我在我的母版页中有一个宏调用,它根据许多因素(深度,URL路径等)设置正文类。但是,我已将其删除以找出宏为何添加额外空间最后的HTML。
母版页宏线:
<body class="<umbraco:Macro Alias="Bodyclass" runat="server"></umbraco:Macro>">
简化宏:
@{
var bodyClass = "";
if ((Model.NodeTypeAlias == "WLHomePage" ) ||
(Model.NodeTypeAlias == "WLHomeSubPage" ))
{ bodyClass = "front"; } else {
bodyClass = "not-front"; }
@bodyClass;
}
返回:
<body class="
front">
请注意class =“的第一个双引号和实际的类字符串之间的额外空格。
答案 0 :(得分:1)
@{
if (Model.NodeTypeAlias == "WLHomePage" || Model.NodeTypeAlias == "WLHomeSubPage")
{
return "front";
}
else
{
return "not-front";
}
}
尝试它只返回一个值。
答案 1 :(得分:0)
尝试使用Html.Raw输出html。 如下所示:
@{
var bodyClass = "";
if(...)
{
bodyClass = "front";
}
else
{
bodyClass = "not-front";
}
@(Html.Raw(@bodyClass));
}
答案 2 :(得分:0)
删除额外换行符
确保在宏代码之前或之后没有额外的新行。您可能希望在文本编辑器中打开cshtml文件来检查。在我的结束之后做了一些测试(使用v4.8),这是我可以找到的唯一条件,其中添加了额外的换行符。在代码之前使用剃刀评论(@* ... *@
)也会添加换行符。
<强>替代强>
将类添加到标记的另一种方法是使用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>
答案 3 :(得分:0)
我的.NET开发人员破解了这个:它是第一行的空白区域。向上移动var,如下所示:
@{ var bodyClass = "";
和&gt; poof&lt;空白消失了。
这是一个umbraco错误吗?
全部谢谢!