如何使用 Sitefinity oDataWeb 服务获取内容项的完整内容 URL 并将其添加到响应数据中?

问题描述

我正在尝试使用 Sitefinity 的 Web 服务功能数据库查询内容项列表,在本例中为事件列表。到目前为止,我已经成功地获得了一个响应,它是一个代表我的事件数据的对象数组。这是事件对象的一个​​示例:

{"Id":"f3fd8515-3279-6e2e-aa53-ff00001c1b3c","LastModified":"2021-05-28T16:40:08Z","PublicationDate":"2021-05-28T16:40:08Z","Title":"Future event 1","Description":"","DateCreated":"2021-05-28T16:40:08Z","IncludeInSitemap":true,"UrlName":"future-event-1","MetaTitle":"","MetaDescription":"","ToggleCalendarBtns":true,"CTABtnContext":"","CTABtnText":"Event Website","CTABtnURL":"#","AllowComments":true,"EventStart":"2021-07-01T17:00:00Z","EventEnd":"2021-07-01T18:00:00Z","ContactEmail":null,"ContactWeb":null,"Street":"","City":"","Country":"Virtual","State":"","ContactName":"","ContactCell":"","ContactPhone":"","Content":"","Summary":"","IsRecurrent":false,"RecurrenceExpression":null,"TimeZoneId":"Central Standard Time","AllDayEvent":false,"Location":"","ParentId":"62e1290c-2f0f-4a5d-8def-6c46fc900657","EventStartUtcOffset":-300.0,"EventEndUtcOffset":-300.0,"EventStartWithOffset":"2021-07-01T12:00:00Z","EventEndWithOffset":"2021-07-01T13:00:00Z"}

是否可以修改 Sitefinity 的网络服务功能,以向该数据对象添加附加属性,以获取内容项的实际 URL?我的意思是,返回的“UrlName”属性只是在页面上查看它所需的事件完整 URL 的部分片段:

UrlName 属性future-event-1

完整的活动网址:/2021/07/01/default-calendar/future-event-1

如何让 Sitefinity 的 oData 响应包含完整事件 Url(如上面第二个示例中所示),而不仅仅是 UrlName slug?

解决方法

您可以这样做:

  1. 转到管理 > 设置 > 高级 > Web 服务 > 路由 > 前端 > 服务 > {您的服务} > 类型 > Telerik.Sitefinity.Events.Model.Event > 属性映射

  2. 创建 PersistentPropertyMapping 类型的新映射(单击“新建”时,您将在下拉列表中看到它)。

  3. 输入 ItemDefaultUrl 作为持久名称和名称。保存。

现在,当您查询单个事件的数据时,例如:

/api/events/events/8dab99e3-fed6-4e8e-887f-e23f56ec32c4

或所有事件

/api/events/events

新属性将包含在响应中,并且应包含您需要的内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...