如何从图像裁剪器获取多个图像网址

时间:2017-06-01 06:23:30

标签: c# umbraco

我遇到有关多个图像裁剪器的问题,起初我已使用Image图像媒体类型上的Image cropper属性替换了默认的文件上传属性。我使用多个媒体选择器上传多个图像,我的问题是如何在表面控制器中获取图像URL?

这就是我所做的

var docsId = Umbraco.TypedContent(Convert.ToInt32(document.Get("id"))); var imageList = docsId.GetPropertyValue<string>("images").GetCropUrl(width: 329, height: 200);

  

但它表示&#39; 无法隐式转换类型&#39;字符串&#39;到&#39; System.Collections.Generic.List &#39;

我尝试了另一种选择,我尝试了这段代码

var docsId = Umbraco.TypedContent(Convert.ToInt32(document.Get("id"))); var imageList = docsId.GetPropertyValue<string>("images").GetCropUrl(width: 329, height: 200);

  

再次出现错误&#39; 类型&#39; System.ArgumentNullException&#39;的异常发生在umbraco.dll但未在用户代码中处理&#39;

希望任何人都可以帮助解决这个问题。我是Umbraco的新人。

谢谢,

3 个答案:

答案 0 :(得分:0)

@Harvey - 这是document

var searcher = new IndexSearcher(indexDirectory, true);

var masterQuery = new BooleanQuery();

TopDocs resp = searcher.Search(masterQuery, null, searcher.MaxDoc());

foreach (var scoreDoc in resp.ScoreDocs) {
    var document = searcher.Doc(scoreDoc.doc);
    var docsId = Umbraco.TypedContent(Convert.ToInt32(document.Get("id")));
    var imageList = docsId.GetPropertyValue<string>("images").GetCropUrl(width: 329, height: 200);
}

答案 1 :(得分:0)

.GetCropUrl期望输入System.Collections.Generic.List,但您尝试使用string类型。

将您的代码更改为以下内容:

var docsId = Umbraco.TypedContent(Convert.ToInt32(document.Get("id")));
var imageList = Url.GetCropUrl(docsId, propertyAlias: "images", height: 200, width: 329);

阅读使用图像裁剪器here

答案 2 :(得分:0)

我认为document是一个Umbraco内容节点。此文档的multiple media picker包含别名images

因此,您已获得document类型的IPublishedContent

var document = Umbraco.TypedContent(Convert.ToInt32(document.Get("id")));

multiple media picker存储您选择的medias逗号的ID:1124, 1130, 1401, ...,因此首先您需要将ID转换为数组:

var imageIds = docsId.GetPropertyValue<string>("images").Split(',');

然后从ID数组中获取媒体列表:

var imageList = Umbraco.TypedMedia(imageIds);

然后您可以使用for循环获取每个图像的裁剪图像的URL作为示例:

for (var image in imageList) 
{
    var imageCropUrl = image.GetCropUrl(width: 329, height: 200);
    <img src="imageCropUrl"></img>
}