Umbraco - GetMedia没有返回正确的网址

时间:2013-01-03 17:23:36

标签: c# .net xpath umbraco

我正在尝试重定向到媒体网址,但是使用代码打击,会导致完整的网址与媒体的大小连接。

例如,url返回/media/123/example.pdfpdf4000

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

发生了什么事?

3 个答案:

答案 0 :(得分: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迭代器更好。

答案 1 :(得分:2)

solution explained herehere。但是,从本质上讲,您可以创建一个方法来解决问题:

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;
}

答案 2 :(得分:0)

要获取媒体文件网址,只需

即可
new Media(mediaId).getProperty("umbracoFile").Value.ToString()