我有一个自定义控制器来发送消息。所以我需要获取属性字段名称和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();
任何帮助都会得到赞赏
答案 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();
}
希望这会帮助有同样问题的人。