2

メディアの URL にリダイレクトしようとしていますが、コードブローを使用すると、メディアのサイズによって連結された完全な URL になります。

たとえば、URL は /media/123/example.pdfpdf4000 を返します。

XPathNodeIterator xName = umbraco.library.GetMedia(Convert.ToInt32(pdfid), false);
string url = xName.Current.Value;
Response.Redirect("~/"+ url);

何が起こっている?

4

3 に答える 3

3

私はこれを行う方法を探していましたが、umbracoにはこのようなデータを簡単に取得するためのuQueryが含まれているため、次の質問に答えることができます。

Media pdf = umbraco.uQuery.GetMedia(pdfId);
Response.Redirect(pdf.GetProperty<string>("umbracoFile"));

注:ファイルではなく画像メディアアイテムの場合は、さらに簡単になります。

Media img = umbraco.uQuery.GetMedia(imgId);
imgTag.ImageUrl = img.GetImageUrl();

uQueryに含まれていない理由はわかりませんGetFileUrl()GetProperty<string>()、xpathイテレータを自分で使用するよりも優れているようです。

于 2013-02-21T16:20:08.377 に答える
2

hereおよびhereで説明されている解決策があります。ただし、本質的には、問題を解決するために以下のようなメソッドを作成できます。

public string getImage(int ImageID)
{
    XPathNodeIterator xn = umbraco.library.GetMedia(ImageID, false);
    xn.MoveNext();

    XPathNodeIterator xn2 = xn.Current.Select("data[@alias='umbracoFile']");
    xn2.MoveNext();
    return xn2.Current.Value;
}
于 2013-01-06T09:59:39.123 に答える
0

メディア ファイルの URL を取得するには、次のようにします。

new Media(mediaId).getProperty("umbracoFile").Value.ToString()
于 2014-06-20T07:19:53.330 に答える