我有一個屬性爲「Image」的頁面數據文件夾,它是對Composite C1後端媒體文件的引用。檢索媒體文件的外部URL
我現在想檢索我的asp.net用戶控件的數據,但我得到的,當我訪問我的PageDataFolder類型「圖像」屬性,是一個具有以下格式的字符串:
mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d
我不知道如何從中獲取外部圖像url。有我可以使用的API函數嗎?
我有一個屬性爲「Image」的頁面數據文件夾,它是對Composite C1後端媒體文件的引用。檢索媒體文件的外部URL
我現在想檢索我的asp.net用戶控件的數據,但我得到的,當我訪問我的PageDataFolder類型「圖像」屬性,是一個具有以下格式的字符串:
mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d
我不知道如何從中獲取外部圖像url。有我可以使用的API函數嗎?
構建像
〜/媒體({MediaKey})
示例的URL: 「〜/媒體(mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d)」
一旦C1頁面被渲染,它將被替換爲以下SEO友好url:
/media/{在媒體存檔中的路徑)
例如: 「/媒體/ 5611182f-6462-4b80-a051-3c3b9bb3276d /文獻/截圖/奧林匹亞/ 1_png」
請注意,您可以通過查詢字符串指定圖像resing /裁剪選項。 http://docs.composite.net/Getting-started/Configuration/Resizing-Images
如果你因爲某些原因不能依靠C1頁面渲染邏輯,你可以建立一個公共媒體的URL與下面的代碼:
protected string GetMediaUrl(string mediaPath)
{
string[] parts = mediaPath.Split(new[] { ':' });
string mediaStore = parts[0];
Guid mediaId = new Guid(parts[1]);
string mediaUrl = MediaUrls.BuildUrl(new MediaUrlData { MediaStore = mediaStore, MediaId = mediaId, QueryParameters = new NameValueCollection() },
UrlKind.Public);
// Temporary fix, allows media player to receive a nice url with an extension
return mediaUrl.Replace("_jpg", ".jpg").Replace("_mov", ".mov").Replace("_m4v", ".m4v").Replace("_swf", ".swf");
}
我找到了一種方法,但它不完全最短的一個:
MediaUrlHelper.GetUrl(MediaUrlHelper.GetFileFromQueryString(new NameValueCollection { {"id", myItem.Image} }))
我還是希望有人想出了一個更好的解決方案,我會很樂意來標記一個作爲答案。
,如果你在你的用戶控件一IMediaFile參考,斜面你只需將該對象傳入MediaUrlHelper.GetUrl(...)?? –
不幸的是,當我嘗試訪問屬性(如果我的C#中的頁面數據文件夾)時,我只有上述表單的字符串。就像我在嘗試通過API訪問頁面引用時僅獲取GUID一樣。 – magnattic
真......我誤解了,認爲圖像是UserControl上的一個屬性。但爲什麼你需要外部網址?爲什麼不把它寫成像/ media(mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d)並讓C1在渲染時爲你展開url? –
嘿,我真的很喜歡使用〜/ Media()語法,但由於某種原因,它不適合我。我有一個ascx控件,通過LoadUserControl函數加載到我的頁面中。這是我的轉發器中的代碼:''雖然使用實際的媒體網址,但它並不替換字符串。有什麼可能出錯?有任何想法嗎?我試圖離開runat =服務器,但這沒有幫助。 – magnattic
是否可以在asp.net用戶控件的數據綁定之前應用URL替換? – magnattic
確實,C1不處理用戶控件的結果。我可以看到2個可能的解決方案,如何在控件呈現後如何製作它: 1)編寫一個控件,您可以使用該控件將aspx控件包圍起來,並將替換Render事件 –