1

Composite C1 バックエンドのメディア ファイルへの参照であるプロパティ「Image」を持つページ データ フォルダがあります。

asp.net ユーザー コントロールでデータを取得したいのですが、PageDataFolder タイプの "Image" プロパティにアクセスしたときに得られるのは、次の形式の文字列だけです。

メディアアーカイブ:b5354eba-3f69-4885-9eba-74576dff372d

そこから外部画像のURLを取得する方法がわかりません。使用できる API 関数はありますか?

4

2 に答える 2

3

次のようなURLを作成します

〜/ media({MediaKey}

例: "〜/ media(mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d)"

C1ページがレンダリングされると、次のSEO対応URLに置き換えられます。

/ media / {メディアアーカイブ内の画像へのパス}

例: "/ media / 5611182f-6462-4b80-a051-3c3b9bb3276d / References / Screenshots / Olympiacos / 1_png"

クエリ文字列を介して画像のresing/croppingオプションを指定できることに注意してください。 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 に答える