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

Kle*_*rBH 4 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();
Run Code Online (Sandbox Code Playgroud)

但问题是,如果页面名称发生更改,则URL将更改,代码将中断.

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

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

 IPublishedContent root = Umbraco.TypedContent(???);
 return root.GetProperty("email", true).Value.ToString();
Run Code Online (Sandbox Code Playgroud)

任何帮助将得到赞赏

ant*_*tao 10

如果您有超过1个'ContactUs'节点,或者没有,那么您的解决方案将带来问题.然后你不知道会得到哪一个.

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

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

IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id)
Run Code Online (Sandbox Code Playgroud)