Razor 翁布拉科,剃须刀和图像库

Razor 翁布拉科,剃须刀和图像库,razor,umbraco,Razor,Umbraco,我是翁布拉科的新手。我正在创建一个图像库(称为客户)。客户有一个徽标,这是一个图像 如何创建输出客户徽标列表的razor宏 我在寻找cshtml代码,可能是这样的: @inherits umbraco.MacroEngines.DynamicNodeContext @foreach (var customer in Content.Customers) { <img src="@customer.logo.umbracoFile" alt="@customer.Name"/>

我是翁布拉科的新手。我正在创建一个图像库(称为客户)。客户有一个徽标,这是一个图像

如何创建输出客户徽标列表的razor宏

我在寻找cshtml代码,可能是这样的:

@inherits umbraco.MacroEngines.DynamicNodeContext
@foreach (var customer in Content.Customers) {
  <img src="@customer.logo.umbracoFile" alt="@customer.Name"/>
}
@继承umbraco.MacroEngines.dynamicontext
@foreach(Content.Customers中的var客户){
}

提前谢谢

我假设脚本在客户页面上执行,并且包含日志和url的内容类型称为客户:

@foreach(Model.customer中的var customer)
{
}

Model.Customer
将为您提供当前页面中
Customer
s(内容类型)的所有子项的列表。

以下是有效的代码

@inherits umbraco.MacroEngines.DynamicNodeContext
@foreach (var customer in Model.NodeById(1062).Children) {
  <img src="@umbraco.IO.IOHelper.ResolveUrl(customer.logo)" alt="@customer.Name"/>
}
@继承umbraco.MacroEngines.dynamicontext
@foreach(Model.NodeById(1062.Children)中的var客户){
}

对于使用动态位置(宏参数),您可以做两件事:

1。在根文档中设置此选项,以便用户可以更改客户滑块位置(如果您愿意):

var RootNode = @Model.NodeById(@Model.AncestorOrSelf(1).HeaderRoot);
其中HeaderRoot是起始文件(根)上属性的名称

2。在razor脚本上使用参数

var rootNode = @Parameter.RootNode;
并使用类似于:

@Model.NodeById(rootNode).Children();
因此,在您的代码中,它看起来像这样(未经测试):

@继承umbraco.MacroEngines.dynamicontext
@{var rootNode=@Parameter.rootNode;}
@foreach(Model.NodeById(rootNode.Children())中的var customer){
}

我部分解决了这个问题。您需要将Content.Customers替换为Model.NodeById(1062.Children)。我可以得到URL,它是customer.logo,它输出类似~/media/105/ozmosis.jpg的内容,但是URL.Content无法解析tildeoh抱歉,我只看了代码来获取媒体文件的URL,我会更新…谢谢Marapet。不,客户实际上不是一个页面(见我的截图),客户的可以放在任何页面中。这就是为什么我必须使用NodeById。有更好的方法吗?使用节点id通常不是一个好主意-如果重新创建节点,id可能会不同。您可以使用
Model.Customer
获取所有具有内容类型
Customer
(我更新了我的答案)的子项。您可以使用宏参数选项选择节点什么是宏参数选项和/或如何使用它?
@Model.NodeById(rootNode).Children();
@inherits umbraco.MacroEngines.DynamicNodeContext

@{ var rootNode = @Parameter.RootNode;}
@foreach (var customer in Model.NodeById(rootNode).Children()) {
  <img src="@umbraco.IO.IOHelper.ResolveUrl(customer.logo)" alt="@customer.Name"/>
}