C# 如何从图像裁剪器获取多个图像url
我有一个关于多重图像裁剪器的问题,首先我用我的图像媒体类型上的图像裁剪器属性替换了默认的文件上载属性。我正在使用多媒体选择器上载多个图像,我的问题是如何在surface controller中获取图像URL 这就是我所做的C# 如何从图像裁剪器获取多个图像url,c#,umbraco,C#,Umbraco,我有一个关于多重图像裁剪器的问题,首先我用我的图像媒体类型上的图像裁剪器属性替换了默认的文件上载属性。我正在使用多媒体选择器上载多个图像,我的问题是如何在surface controller中获取图像URL 这就是我所做的 var docsId=Umbraco.TypedContent(Convert.ToInt32(document.Get(“id”)); var imageList=docsId.GetPropertyValue(“图像”).GetCropUrl(宽:329,高:200) 但
var docsId=Umbraco.TypedContent(Convert.ToInt32(document.Get(“id”));
var imageList=docsId.GetPropertyValue(“图像”).GetCropUrl(宽:329,高:200)代码>
但是它说,“不能将类型“string”隐式转换为“System.Collections.Generic.List””
我尝试了另一种选择,我尝试了这个代码
var docsId=Umbraco.TypedContent(Convert.ToInt32(document.Get(“id”));
var imageList=docsId.GetPropertyValue(“图像”).GetCropUrl(宽:329,高:200)代码>
在umbraco.dll中再次出现错误“类型为”System.ArgumentNullException”的异常,但未在用户代码中处理
希望任何人都能帮助解决这个问题。我刚到翁布拉科
谢谢,
金@Harvey-
这是文档
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);
}
var searcher=newindexsearcher(indexDirectory,true);
var masterQuery=new BooleanQuery();
TopDocs resp=searcher.Search(masterQuery,null,searcher.MaxDoc());
foreach(相应ScoreDocs中的var scoreDoc){
var document=searcher.Doc(scoreDoc.Doc);
var docsId=Umbraco.TypedContent(Convert.ToInt32(document.Get(“id”));
var imageList=docsId.GetPropertyValue(“图像”).GetCropUrl(宽:329,高:200);
}
.GetCropUrl
需要类型System.Collections.Generic.List
,但您正在尝试使用类型字符串
将代码更改为以下内容:
var docsId = Umbraco.TypedContent(Convert.ToInt32(document.Get("id")));
var imageList = Url.GetCropUrl(docsId, propertyAlias: "images", height: 200, width: 329);
请阅读使用图像裁剪器。我假设文档
是一个Umbraco内容节点。并且此文档有一个别名为图像的多媒体选择器
因此,您已经获得了类型为ippublishedcontent
的文档
:
var document = Umbraco.TypedContent(Convert.ToInt32(document.Get("id")));
多介质选取器
以逗号分隔存储所选取介质的ID:1124、1130、1401、
,因此首先需要将ID放入数组:
var imageIds = docsId.GetPropertyValue<string>("images").Split(',');
然后,您可以使用for循环获取每个图像的裁剪图像的url:
for (var image in imageList)
{
var imageCropUrl = image.GetCropUrl(width: 329, height: 200);
<img src="imageCropUrl"></img>
}
for(imageList中的var图像)
{
var imageCropUrl=image.GetCropUrl(宽:329,高:200);
}
两段已发布的代码之间有什么区别?文档的类型是什么i发布的内容
?@Harvey,感谢您的及时回复文档
就是这样的GetPropertyValue
。您使用的是什么版本的Umbraco?先生,我已经这样做了,但它在我的控制器中给我错误“UrlHelper”不包含“GetCropUrl”的定义和最佳扩展方法重载“urlHelperEnderextesions.GetCropUrl”(UrlHelper,IPPublishedContent,int?,int?,string,string,int?,ImageCropMode?,ImageCropChor?,bool,bool,bool,string,ImageCropRadioMode?,bool,bool)’需要类型为“UrlHelper”的接收器。
。
for (var image in imageList)
{
var imageCropUrl = image.GetCropUrl(width: 329, height: 200);
<img src="imageCropUrl"></img>
}