Umbraco 4.11获取父节点

本文关键字:父节点 获取 Umbraco | 更新日期: 2023-09-27 18:09:05

应该是一个简单的答案。

我正在使用Umbraco 4.11,我需要获得一个cast节点的父节点。我对c#有点陌生,我正在修复别人做的控件。应该很简单,但它最初是在DLL从4.7更新到4.11之前编写的。

下面是我的代码。我需要得到父节点。做这个的正确语法是什么?你可以看到旧的代码被注释掉了。

提前感谢。

 //New using
 using umbraco.NodeFactory;
 private string GetEmailContactProperty()
    {
        Node node = Node.GetCurrent();
        string email = null;
        do
        {
            if (node.NodeTypeAlias == NodeTypeAlias)
            {
                email = node.GetProperty("emailContact").Value;
                if (!String.IsNullOrEmpty(email))
                    break;
            }
            //node = node.Parent;
           //***Need Parent Node here. new Node is asking for Overload.
            node = new Node().Parent;
        } while(node.Parent.Id > -1);

Umbraco 4.11获取父节点

原始代码应该执行您所要求的关于获取父节点的操作。

node = node.Parent;

基本上,您希望从代码中遍历树,遍历您的祖先,以找到一个名为"emailContact"的属性,该属性不是IsNullOrEmpty。

我想你要找的是这样一段代码:

var emailContact = CurrentModel.AncestorsOrSelf().Items.Where(n => !string.IsNullOrWhiteSpace(n.GetProperty("emailContact").Value))
另一种方法是将递归标志设置为true,如下所示:
var emailContact = Model.GetProperty("emailContact ", true).Value; 

(见此帖子:http://our.umbraco.org/forum/developers/razor/19005-Recursive-fields-using-Razor-macro?p=1)

另一方面,看起来你目前正在处理文档而不是"内容节点",这是后台控件还是前端控件?

希望能有所帮助