1

我有一个带有属性“图像”的页面数据文件夹,它是对复合 C1 后端中媒体文件的引用。

我现在想在我的 asp.net 用户控件中检索数据,但是当我访问 PageDataFolder 类型的“图像”属性时,我得到的只是一个具有以下格式的字符串:

媒体存档:b5354eba-3f69-4885-9eba-74576dff372d

我不确定如何从中获取外部图像 url。有我可以使用的 API 函数吗?

4

2 回答 2

3

建立一个像

〜/媒体({媒体密钥}

例如:“~/媒体(媒体存档: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");
}
于 2012-09-14T09:28:35.647 回答
1

我找到了一种方法,但它并不是最短的方法:

MediaUrlHelper.GetUrl(MediaUrlHelper.GetFileFromQueryString(new NameValueCollection { {"id", myItem.Image} }))

我仍然希望有人提出更好的解决方案,我很乐意将其标记为答案。

于 2012-09-13T16:48:26.290 回答