简体   繁体   English

Umbraco 7-从一个页面到另一个页面获取属性

[英]Umbraco 7 - Get property from one page to another

Im new to umbraco 7 我是umbraco 7的新手

I have a Masterpage - Inside I have 2 Partialviews - HEADER & FOOTER 我有一个母版-里面我有2个Partialviews - HEADERFOOTER

I have 2 subpages that inherites from Masterpage - HOME PAGE & STANDARD PAGE 我有2个子页面继承自Masterpage- HOME PAGESTANDARD PAGE

Inside HOME PAGE - Document Type I have a Reletad Links property 内部HOME PAGE - Document Type我有一个Reletad Links属性

The code for the Releted Links property is inside a Partialview called Links Releted Links属性的代码在Releted Links内部,称为Links

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using Newtonsoft.Json.Linq

@{
    if (Model.Content.HasValue("externalLinks") && Model.Content.GetPropertyValue<string>("externalLinks").Length > 2)
    {
        <ul>
            @foreach (var item in Model.Content.GetPropertyValue<JArray>("externalLinks"))
            {
                var linkTarget = item.Value<bool>("newWindow") ? "_blank" : null;

                if (Model.Content.GetPropertyValue<JArray>("externalLinks").First() == item)
                {
                    <li>
                        <a href="@(item.Value<string>("link"))" target="@linkTarget"> <i class="fa fa-phone" aria-hidden="true"></i> @(item.Value<string>("caption"))</a>
                    </li>
                }
                else
                {
                    <li>
                        <a href="@(item.Value<string>("link"))" target="@linkTarget"> <i class="fa fa-flag" aria-hidden="true"></i> @(item.Value<string>("caption"))</a>
                    </li>
                }
            }
        </ul>
    }
}

The LINKS partialview is loaded inside the HEADER partialview LINKS局部视图已加载到HEADER局部视图内

The code is working fine when navigating to HOME PAGE but If I go to STANDARD PAGE then the Reletad Links property is no loger visible. 导航到“ HOME PAGE时,该代码运行良好,但是如果我转到“ STANDARD PAGE则“ Reletad Links属性将不可见Reletad Links

What can I do to fix this. 我该怎么做才能解决此问题。

Instead of referencing the current page (through Model.Content) you'll want to reference the homepage 而不是通过Model.Content引用当前页面,而是要引用主页

I've added a bit of code to the PartialView to illustrate it, haven't tested it though 我已经在PartialView中添加了一些代码来说明它,尽管没有进行测试

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using Newtonsoft.Json.Linq

@{
    // First get the homepage by traversing the Umbraco tree and searching for the homepage node
    var homepage = Umbraco.TypedContentAtRoot().First().DescendantsOrSelf().FirstOrDefault(x => x.DocumentTypeAlias == "home");
    if (homepage != null && homepage.HasValue("externalLinks") && homepage.GetPropertyValue<string>("externalLinks").Length > 2)
    {
        <ul>
            @{
                var externalLinks = homepage.GetPropertyValue<JArray>("externalLinks");
                foreach (var item in externalLinks)
                {
                    var linkTarget = item.Value<bool>("newWindow") ? "_blank" : null;

                    if (externalLinks.First() == item)
                    {
                        <li>
                            <a href="@(item.Value<string>("link"))" target="@linkTarget"> <i class="fa fa-phone" aria-hidden="true"></i> @(item.Value<string>("caption"))</a>
                        </li>
                    }
                    else
                    {
                        <li>
                            <a href="@(item.Value<string>("link"))" target="@linkTarget"> <i class="fa fa-flag" aria-hidden="true"></i> @(item.Value<string>("caption"))</a>
                        </li>
                    }
                }
            }
        </ul>
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM