умбрако 7: получить значение свойства

Я использую umbraco 7 ASP.NET С# MVC 4.

Я пытаюсь использовать новый umbraco, до сих пор все было в порядке, но мне нужно получить свойство одной из моих страниц, которые я настроил.

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
     var homePage = CurrentPage.AncestorsOrSelf(1).First();

     var menuItems = homePage.Children.Where("isMenu == true");

}
<!-- Nav -->

<div class="row">
<div class="col-md-12 top-menu-container">
    <ul>
        @* If the Url of the current page is "/" then we want to add the class "current_page_item" *@
        @* Otherwise, we set the class to null, that way it will not even be added to the <li> element *@
        <li>
            <div onclick="location.href='/';"  class="col-md-2 metro-container" style="background-color:#@Model.Content.GetPropertyValue("navigationColor")" >
                <img class="menu-img" src="../../media/1001/home.png" alt="" />
                Home
            </div>
        </li>

        @foreach (var item in menuItems)
        {
            @* If the Id of the item is the same as the Id of the current page then we want to add the class "current_page_item" *@
            @* Otherwise, we set the class to null, that way it will not even be added to the <li> element *@
            
            <li>
                <div onclick="location.href='@item.Url';"  class="col-md-2 metro-container" style="background-color:#@item.Content.GetPropertyValue("navigationColor")" >
                    <img class="menu-img" src="../../media/1001/home.png" alt="" />
                    @item.Name
                </div>
            </li>
        }
    </ul>
</div>
</div>

Таким образом, первый li вне цикла я просто получаю метод Getproperty содержимого модели, который, безусловно, дает мне любое свойство, о котором я тоже говорю.

Однако цикл, который у меня есть, хотя и проходит через текущие дочерние страницы, я не могу получить конкретное свойство.

Хуже всего то, что intellicense не работает, так как это все время выполнения.

Линия, о которой идет речь,

<div onclick="location.href='@item.Url';"  class="col-md-2 metro-container" style="background-color:#@item.Content.GetPropertyValue("navigationColor")" >

Мне нужно получить цвет, заданный на странице, из элемента управления navigationColor.

Что я здесь делаю неправильно?


person lemunk    schedule 16.05.2014    source источник


Ответы (4)


Большой сумасшедший на моей стороне.

Переменная элемента в цикле foreach уже содержит свойства, содержащиеся в элементе.

все, что вам нужно сделать, это

item.NameofYourPropertyAlias

и это должно сделать это.

person lemunk    schedule 16.05.2014

У меня работает следующий код:

item[index].GetProperty("name").Value
person Grey Wolf    schedule 07.04.2015

Хуже всего то, что intellicense не работает, так как это все время выполнения.

Проблема в том, что вы используете динамическую модель вместо строго типизированной.

Вместо использования CurrentPage вы можете использовать Model.Content.

Итак, вместо:

var homePage = CurrentPage.AncestorsOrSelf(1).First();

Использовать:

var homePage = Model.Content.AncestorOfSelf(1);

Затем Intellisense будет работать после того, как вы наберете остановку после homePage.

Я также настоятельно рекомендую вводить using Umbraco.web вместе с остальными операторами использования в верхней части шаблона. Это должно еще больше улучшить интеллект и позволить вам видеть такие методы, как .GetPropertyValue<T>(string alias).

После этого вы сможете использовать item.GetPropertyValue<string>("navigationColor").

person harvzor    schedule 14.01.2016

item.NameofYourPropertyAlias

это правильное использование элемента во время цикла

person Robert P    schedule 16.05.2014