2013-12-17 25 views
0

我想寫一個基本的MVC小部件,將列出與每個鏈接的新聞項目,但我堅持如何獲得每個新聞項目的正確URL 。有誰知道這是如何完成的?Sitefinity - 從MVC小部件獲取完整的URL

我知道NewsItems並不一定只有一個鏈接,所以我根據新聞模塊管理器匹配首選頁面的URL。在我的情況下,我提名了一個名爲「news-item」的頁面作爲默認頁面,所以我的所有新聞網址都應該在它們前面有「news-item」。

如何以編程方式構建此URL?

我試圖通過運行「GetFullUrl()」的默認頁節點上的方法來獲得完整的URL,但我卡住之前,我甚至走到這一步:

var newsItems = App.WorkWith().NewsItems().Get(); 
var defaultPage = newsItems.FirstOrDefault().DefaultPageId.Value; 

當試圖讓默認頁面的ID,以便我可以再獲取其相應的URL,我馬上會遇到一個錯誤:

Nullable object must have a value. 
>> var defaultPage = newsItems.FirstOrDefault().DefaultPageId.Value; 

任何想法如何這應該工作?我覺得DefaultPageId是回來了空出於某種原因...

回答

1

您可以使用ContentLocationService這樣的:

var newsItems = App.WorkWith().NewsItems().Get(); 
var myNewsItem = newsItems.FirstOrDefault(); 

var contentLocationService = SystemManager.GetContentLocationService(); 
var contentLocation = contentLocationService.GetItemDefaultLocation(myNewsItem); 
string defaultUrl = contentLocation == null ? "" : contentLocation.ItemAbsoluteUrl; 

希望這有助於。

+0

這工作完美 - 我已經在我的G +帖子上回復了您的傑出答案,但再次感謝! –