1
在Umbraco 7中,是否可以將mediapicker序列化爲json?所以它可能是這樣的東西....Umbraco - MediaPicker對象數據到JSON
[{'name':'muffin', 'file':'muffin.jpg', 'text':'some text', 'etc': 'and so on'}]
我的設置是這樣的,我有一個mediaPicker命名爲「mediaPhotos」。包含在由mediaPicker選擇的文件夾中我擁有自定義媒體類型「sillyImage」的圖像。
我可以創建一個控制器,只查詢單個項目爲xml。我試圖將mediaPicker所選圖像的整個文件夾作爲目標,並將其內容轉換爲json。
我試圖用張貼bowserm低於其工作原理是這樣的解決方案...
它動態地獲取當前頁與mediaPicker別名。然後它傳遞了自定義媒體類型。
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無法從當前頁面獲取媒體選擇器對象。
謝謝!
感謝bowserm,它看起來正確的,但我不能找出語法錯誤 返回的最後一行是給我一個錯誤說它「預計一}或)」,並在收盤時對於返回,它會在類中發出錯誤「無效令牌」,觸發或接口成員聲明「 – tree
糟糕。我剛剛編輯了我的答案。 GetMediaObj模型應該返回一個IEnumerable的MediaApiModels,如果你想獲得它們全部。另外,我還有一些其他的語法錯誤。現在就試試。 – bowserm
我試過了上面的例子,無法讓它返回任何東西。我會嘗試調用「GetMediaObj」方法。我知道我可以用第一種方法「GetMediaById」擊打控制器;這工作正常。我也努力編寫別名中的自定義媒體類型,但仍然沒有任何內容。 – tree