0

我正在尝试编写一个基本的 MVC 小部件,该小部件将列出带有链接的新闻项目,但我一直坚持如何为每个新闻项目获取正确的 URL。有谁知道这是怎么做到的?

我知道 NewsItems 不一定有一个链接,所以我根据新闻模块管理器在匹配首选页面的 URL 之后。在我的例子中,我指定了一个名为“news-item”的页面作为默认页面,所以我所有的新闻 URL 前面都应该有“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 出于某种原因返回 null ......

4

1 回答 1

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;

希望这会有所帮助。

于 2013-12-17T08:50:30.857 回答