Umbraco 7 mvc如何获取当前页面ID

时间:2014-04-21 22:23:06

标签: asp.net-mvc umbraco umbraco7

我有一个自定义控制器来发送消息。所以我需要获取属性字段名称和alias =“email”的值,这将用于发送电子邮件到。

以下代码可以使用

 var id = umbraco.uQuery.GetNodeByUrl("/contact-us");
 IPublishedContent root = Umbraco.TypedContent(id.Id);
 return root.GetProperty("email", true).Value.ToString();

但问题是,如果页面名称发生变化,则网址会发生变化,代码也会中断。

那么如何更改上面的代码以获取当前页面ID并将其插入此处(???);?

我认为代码应该是这样的:

 IPublishedContent root = Umbraco.TypedContent(???);
 return root.GetProperty("email", true).Value.ToString();

任何帮助都会得到赞赏

2 个答案:

答案 0 :(得分:10)

如果您有超过1个' ContactUs'节点,或没有。那你就不知道哪一个会得到。

(实际上它是在节点树中找到的第一个,但是有人可以改变它们的顺序......)

您的控制器是Surface控制器吗?你可以这样做:

IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id)

答案 1 :(得分:2)

好的,我找到了问题的解决方案。

var nodes = umbraco.uQuery.GetNodesByType("ContactUs");
if (nodes.Any())
{
   IPublishedContent node = Umbraco.TypedContent(nodes.First().Id);
   return node.GetProperty(property, true).Value.ToString();
}

希望这会帮助有同样问题的人。