【发布时间】:2015-08-24 14:29:30
【问题描述】:
在 Umbraco 7 中,是否可以将 mediapicker 序列化为 json?所以它可能是这样的......
[{'name':'muffin', 'file':'muffin.jpg', 'text':'some text', 'etc': 'and so on'}]
我的设置是这样的,我有一个名为“mediaPhotos”的 mediaPicker。包含在 mediaPicker 选择的文件夹中,我有自定义媒体类型“sillyImage”的图像。
我可以创建一个控制器并仅将单个项目查询为 xml。我正在尝试针对 mediapicker 选择的整个图像文件夹并将其内容转换为 json。
我正在尝试使用 bowserm 在下面发布的解决方案,其工作原理如下......
它使用 mediaPicker 别名动态获取 CurrentPage。然后它通过了自定义媒体类型。
public class MediaApiController : UmbracoApiController
{
[HttpGet]
public MediaApiModel GetMediaById(string id)
{
var media = Umbraco.TypedMedia(id);
return new MediaApiModel
{
MediaId = media.Id,
MediaUrl = media.Url
};
}
[HttpGet]
public IEnumerable<MediaApiModel> GetMediaObj(string mediaAlias)
{
var currentPage = Umbraco.TypedContent(UmbracoContext.Current.PageId);
var mediaRootId = currentPage.GetPropertyValue<string>("mediaPhotos");
var mediaRoot = Umbraco.TypedMedia(mediaRootId);
var media = mediaRoot.Children.Where(m => m.IsDocumentType(mediaTypeAlias));
return media.Select(m => new MediaApiModel
{
MediaId = m.Id,
MediaUrl = m.Url
});
}
}
var uri3 = '//' + document.domain + ':14712' + '/umbraco/api/MediaApi/GetMediaFolder?mediaAlias=sillyImage';
$(document).ready(function () {
$.getJSON(uri3)
.done(function (data) {
console.log('return json data object ' + data);
});
});
我现在收到 500 错误,所以它越来越近了。我认为问题在于控制器中的这些行
var currentPage = Umbraco.TypedContent(UmbracoContext.Current.PageId);
var mediaRootId = currentPage.GetPropertyValue<string>("mediaPhotos");
var mediaRoot = Umbraco.TypedMedia(mediaRootId);
我的页面使用页面名称,因此我不确定 PageId 是根本问题。我知道的一项是 GetPropertyValue 无法从当前页面获取媒体选择器对象。
谢谢!
【问题讨论】: