我正在尝试编写一个基本的MVC小部件,它将列出包含每个新闻项目链接的新闻项目,但我仍然坚持如何为每个新闻项目获取正确的URL。有谁知道这是怎么做的?
我知道NewsItems不一定只有一个链接,所以我按照新闻模块管理器匹配首选页面的URL。在我的情况下,我已经提名了一个名为“news-item”的页面作为默认页面,因此我的所有新闻URL都应该在他们面前有“新闻项目”。
如何以编程方式构建此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由于某种原因而变回null了......
答案 0 :(得分: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;
希望这有帮助。