Цикл свойств и доступ к своим свойствам - PullRequest
0 голосов
/ 28 августа 2018

Я новичок в 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'

Заранее спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

Если вы хотите получить доступ к свойствам типа документа, лучше и проще сделать это следующим образом:

@inherits UmbracoTemplatePage
@{

}

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

CurrentPage является динамическим объектом, тогда как Model.Content получает «текущую страницу», но как строго типизированный IPublishedContent, что означает, что если вы используете Visual Studio, вы получаете intellisense и можете видеть, какие методы вы можете использовать.

В теге H1 я просто вытащил имя текущего узла контента, в foreach я зацикливаюсь на дочерних узлах текущего узла контента и отображаю их свойство с псевдонимом "bodyText" и типом данных "Rich text".

EDIT:

@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>
}
...