应该是一个简单的答案。
我使用的是Umbraco 4.11,我需要获取一个强制节点的节点。我是C#的一个菜鸟,我正在修理别人做的控件。应该很简单,但它最初是在从4.7到4.11的DLL更新之前编写的。
以下是我的代码。我需要获得父节点。执行此操作的正确语法是什么。您可以看到旧代码被注释掉的位置。
提前致谢。
//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);
答案 0 :(得分:2)
原始代码应该就获取父节点而做你所要求的。
node = node.Parent;
答案 1 :(得分:0)
基本上,从您的代码中,您希望在您的祖先之间遍历树,以找到名为" emailContact"那不是IsNullOrEmpty。
我认为你要找的是一段这样的代码:
var emailContact = CurrentModel.AncestorsOrSelf().Items.Where(n => !string.IsNullOrWhiteSpace(n.GetProperty("emailContact").Value))
另一种方法是将recursive标志设置为true的属性设置为true,如下所示:
var emailContact = Model.GetProperty("emailContact ", true).Value;
(见这篇文章:http://our.umbraco.org/forum/developers/razor/19005-Recursive-fields-using-Razor-macro?p=1)
一方面,看起来你正在使用Documents而不是"内容节点",这是后台控制还是前端控制?
希望这有帮助