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);
原始代码应该执行您所要求的关于获取父节点的操作。
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)
另一方面,看起来你目前正在处理文档而不是"内容节点",这是后台控件还是前端控件?
希望能有所帮助