Вопрос по field, razor, umbraco, umbraco-webforms – бритва umbraco - получение полей из контента

2

У меня есть 6 элементов с тем же типом контента «новости», в каждом элементе у меня есть поле newsIntro. Я хочу поместить поля на определенных страницах на другую страницу, поэтому мне нужно настроить таргетинг на определенное поле, чтобы это могло быть newsIntro на узле 1702. Я пробовал несколько вещей, таких как

@ 1720.newsIntro

как мне выбрать конкретное поле

Спасибо

Ваш Ответ

5   ответов
2

ниц:

@Umbraco.Content(1720).newsIntro
Чтобы получить это изнутриforeach (например, с помощью построителя запросов) замените жестко закодированный идентификатор (1720) сitem.Id.
0

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

@Umbraco.Field("newsIntro", recursive: true)
0

@{
    var selection = Umbraco.TypedContent(contentId).Children()
                        .Where(x => x.IsVisible())
                        .OrderBy("CreateDate");
}
@foreach(var item in selection){
            @item.GetPropertyValue("fieldName1")
            @item.GetPropertyValue("fieldName2")
            @item.GetPropertyValue("fieldName_N")
}
15

на которые стоит взглянуть, пока вы изучаете Razor:

Umbraco Razor Feature Walkthrough - An eight part blog post series of many of the new Razor features in Umbraco 4.7 with examples.

Razor DynamicNode Cheat Sheet - A PDF of all the properties and methods available to the Razor DynamicNode object (that includes @Model).

Cultiv Razor Examples - An Umbraco website that you can download and open with WebMatrix or IIS and see various ways to access properties with Razor.

Razor snippets - A compilation of different snippets, examples, etc. from Our Umbraco.

Но в ответ на ваш вопрос, чтобы получить свойство конкретного узла, вы должны получить фактическоеDynamicNode сначала объект, затем используйте псевдоним свойства для доступа к значению свойства. Пример:

@{
    //Get the node
    dynamic node = Library.NodeById(1720);

    // Display the property
    @node.newsIntro
}

Чтобы получить доступ к свойству с текущей страницы, вы просто используетеModel:

@Model.newsIntro

или же

@Model.bodyText

или же

@Model.Name
5

а затем используйте GetPropertyValue для получения значения поля.

@{
  int nodeId = 1720;
  IPublishedContent contentNode = Umbraco.TypedContent(nodeId);
  var newsIntro = contentNode.GetPropertyValue("newsIntro");
}

<p>@newsIntro</p>
Это было именно то, что мне было нужно. Мне нужно было изнутриforeach цикл и поэтому он уже имелvar item in selection поэтому я просто изменил вышеUmbraco.TypedContent(item.Id) и пропустил первую строку. Работал отлично!

Похожие вопросы