我有一个带有属性“图像”的页面数据文件夹,它是对复合 C1 后端中媒体文件的引用。
我现在想在我的 asp.net 用户控件中检索数据,但是当我访问 PageDataFolder 类型的“图像”属性时,我得到的只是一个具有以下格式的字符串:
媒体存档:b5354eba-3f69-4885-9eba-74576dff372d
我不确定如何从中获取外部图像 url。有我可以使用的 API 函数吗?
我有一个带有属性“图像”的页面数据文件夹,它是对复合 C1 后端中媒体文件的引用。
我现在想在我的 asp.net 用户控件中检索数据,但是当我访问 PageDataFolder 类型的“图像”属性时,我得到的只是一个具有以下格式的字符串:
媒体存档:b5354eba-3f69-4885-9eba-74576dff372d
我不确定如何从中获取外部图像 url。有我可以使用的 API 函数吗?
建立一个像
〜/媒体({媒体密钥})
例如:“~/媒体(媒体存档:b5354eba-3f69-4885-9eba-74576dff372d)”
渲染 C1 页面后,它将被以下 SEO 友好 url 替换:
/media/ {媒体档案中图像的路径} )
例如:“/media/5611182f-6462-4b80-a051-3c3b9bb3276d/References/Screenshots/Olympiacos/1_png”
请注意,您可以通过查询字符串指定图像重新处理/裁剪选项。 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} }))
我仍然希望有人提出更好的解决方案,我很乐意将其标记为答案。