Sitefinity - 从MVC小部件中获取完整的URL

时间:2013-12-17 05:36:01

标签: asp.net-mvc sitefinity sitefinity-5

我正在尝试编写一个基本的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了......

1 个答案:

答案 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;

希望这有帮助。