循环遍历属性并访问其自身的属性

Looping Through Properties and accessing its own properties

我是 C# 和 Umbraco 的新手。想不通这个简单的事情,也找不到解决方案

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = null;
}
List<string> test = new List<string>();
var item = CurrentPage.Children.FirstOrDefault();
var count = 0;
foreach (var prop in item.Properties) {
    count++;
    test.Add(prop.PropertyTypeAlias);
}
<html>
...
</html>

如果我计算属性,它会给出正确数量的属性,但我无法访问它自己的属性,例如 "Value"、"PropertyTypeAlias" 等。它抛出异常: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'PropertyTypeAlias'

提前致谢。

如果您想访问文档类型的属性,这样做会更好也更容易:

@inherits UmbracoTemplatePage
@{

}

<h1>@Model.Content.Name</h1>
@foreach (var item in Model.Content.Children)
{
    <h2>@(item.GetPropertyValue<IHtmlString>("bodyText"))</h2>
}

CurrentPage 是一个动态对象,而 Model.Content 获取 "current page",但作为强类型 IPublishedContent,这意味着,如果您使用 Visual Studio,您将获得智能感知并且可以看看你可以使用哪些方法。

在 H1 标签中,我简单地提取了当前内容节点的名称,在 foreach 中,我遍历当前内容节点的子节点并显示它们的 属性 别名 "bodyText" 和数据类型 "Rich text".

编辑:

@inherits UmbracoTemplatePage
@{
    var child = Model.Content.Children.FirstOrDefault();
    var properties = new List<string>();
    foreach (var item in child.Properties)
    {
        properties.Add(item.PropertyTypeAlias);
    }
}
@foreach (var item in properties)
{
    <h1>@item</h1>
}