我遇到有关多个图像裁剪器的问题,起初我已使用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的新人。
谢谢,
金
答案 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>
}