2014-04-21 66 views
4

我有一個自定義控制器發送消息。所以我需要獲取屬性字段名稱和別名=「email」的值,這將用於發送電子郵件到。Umbraco 7 mvc如何獲得當前頁面ID

下面這段代碼工作

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

但是這裏的問題是,如果頁面名稱的變化,URL會改變,代碼將打破。

那麼我怎樣才能改變上面的代碼來獲取當前頁面id並在此處插入(???)?

我認爲代碼應該是這樣的:

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

任何幫助將apprecciated

回答

2

好吧,我發現我的問題解決方案。

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

希望這會幫助有同樣問題的人。

9

如果您有超過1個'ContactUs'節點,或者沒有節點,您的解決方案將帶來問題。然後你不知道哪一個會得到。

(實際上它在節點樹發現的第一個,但後來有人可以改變它們的順序...)

是您的控制器地面控制器?你可以這樣做:

IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id) 
相關問題