我有一个带有属性" Image"的页面数据文件夹,它是对Composite C1后端中的Media文件的引用。
我现在想要在我的asp.net用户控件中检索数据,但是当我访问" Image"我的PageDataFolder类型的属性是一个具有以下格式的字符串:
mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d
我不确定如何从中获取外部图像网址。我可以使用API函数吗?
答案 0 :(得分:3)
建立一个像
这样的网址〜/媒体(的 {MediaKey} 强>)
示例:“〜/ media(mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d)”
呈现C1页面后,它将替换为以下SEO友好网址:
/ media / {媒体档案中图片的路径} )
示例:“/ media / 5611182f-6462-4b80-a051-3c3b9bb3276d / References / Screenshots / Olympiacos / 1_png”
请注意,您可以通过查询字符串指定图像resing / cropping选项。 http://docs.composite.net/Getting-started/Configuration/Resizing-Images
如果由于某种原因无法依赖C1页面呈现逻辑,您可以使用以下代码构建公共媒体网址:
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");
}
答案 1 :(得分:1)
我找到了一种方法,但它并不是最短的方式:
MediaUrlHelper.GetUrl(MediaUrlHelper.GetFileFromQueryString(new NameValueCollection { {"id", myItem.Image} }))
我仍然希望有人提出更好的解决方案,我很乐意将其作为答案。