我正在尝试在 razor 中为 umbraco 网站做一个 if 语句。我需要通过 Name 属性获取页面及其所有子级,以便能够向该页面和树中的任何子级添加样式表
我可以让父母没问题,但我对后代有困难,因为我不确定它会去哪里?
到目前为止,我有:
@{
var selectedNode = @Model.Name();
if(@selectedNode == "blue")
{
do this
}
}
看起来你对剃须刀有点陌生。这个答案列出了一些很好的资源,可帮助您开始学习 Umbraco 的剃刀语法。
在回答您的问题时,我不确定我是否完全理解您要完成的工作。据我所知,您希望根据页面的名称或其祖先之一的名称向页面添加样式表。我建议关闭名称可能不是最佳选择。更稳定的解决方案是使用节点的 id。但是,这是一个希望能有所帮助的代码示例:
@{
var nodes = Model.AncestorsOrSelf().Where("Name == @0", "Blue");
if (nodes.Count() > 0)
{
<link type="text/css" rel="Stylesheet" href="/css/style.css" />
}
}
上面的代码片段获取节点的祖先(包括它自己)并通过节点的名称(“蓝色”)过滤它们。然后它检查集合中是否有任何节点。如果有,那么当前节点要么是“蓝色”,要么它有一个名为“蓝色”的祖先,因此应用了该样式。