3

umbraco 7 ASP.NET C# MVC 4 を使用しています。

新しい umbraco を使用しようとしていますが、これまでのところ問題ありませんが、設定したページの 1 つのプロパティを取得する必要があります。

@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 コントロールから取得する必要があります。

ここで何が間違っていますか?

4

4 に答える 4

2

私の側に大きなダープ。

foreach ループ内の項目 var には、項目に含まれるプロパティが既に含まれています。

あなたがする必要があるのは

item.NameofYourPropertyAlias

そして、それはそれを行う必要があります。

于 2014-05-16T13:38:55.933 に答える
1

次のコードは私にとってはうまくいきます:

item[index].GetProperty("name").Value
于 2015-04-07T07:54:01.047 に答える
1

さらに悪いことに、Intellicense はすべてのランタイムとして機能していません。

問題は、厳密に型指定されたモデルではなく、動的モデルを使用していることです。

を使用する代わりに、 を使用CurrentPageできますModel.Content

したがって、代わりに:

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

使用する:

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

の後に stop を入力すると、Intellisense が機能しますhomePage

using Umbraco.webまた、テンプレートの先頭に残りの using ステートメントを入力することを強くお勧めします。これにより、IntelliSense がさらに改善され、 などのメソッドを確認できるようになります.GetPropertyValue<T>(string alias)

その後、使用できるようになりますitem.GetPropertyValue<string>("navigationColor")

于 2016-01-14T14:15:09.343 に答える
-2
item.NameofYourPropertyAlias

これはループ中の item の適切な使用法です

于 2014-05-16T13:50:34.553 に答える