当Kentico文档中嵌入图像时,图像将作为<img>
标记插入HTML中。我需要确定此图像是否由Kentico托管,如果是,请使用Kentico API检索它的数据库信息。
到目前为止,我已经从URL中解析了文件GUID,如下所示:
const string attachmentPrefix = "~/getattachment/";
if (imageElement.LinkAddress.StartsWith(attachmentPrefix))
{
var start = attachmentPrefix.Length;
var end = imageElement.LinkAddress.IndexOf("/", start);
var fileGuidString = imageElement.LinkAddress.Substring(start, end - start);
var fileGuid = new Guid(fileGuidString);
var info = AttachmentHistoryInfoProvider.GetInfoByGuid("-- what goes here --", fileGuid);
}
但是我没有在Kentico API中找到任何有用的方法,它们将从GUID检索有关附件的信息。我找到的最接近的是AttachmentHistoryInfoProvider.GetInfoByGuid()
,但它需要一个objectType
参数,我找不到任何文档。
有人知道如何从文件GUID开始获取Kentico 7中附件的信息吗?
答案 0 :(得分:1)
您提到您正在谈论媒体库中的图片,但正在尝试使用代码示例中的AttachmentHistoryInfoProvider
。我认为这取决于你所说的“文件中嵌入了媒体库图像”&#39 ;;你以什么方式嵌入它们?例如,可能使用可编辑图像 Web部件。
如果您使用的是媒体库中的文件,则应尝试使用MediaFileInfoProvider.GetMediaFileInfo(Guid, string)
,其中包含文件的Guid和站点代码名称。这将返回MediaFileInfo
课程。您可以在Kentico 7的CMS.DataEngine
程序集中找到它。对于媒体库中的文件,我希望看到要呈现的/SampleSite/media/cats/nohandskitten.aspx
这样的网址。
如果您不使用媒体库中的图片,但直接插入内容,则是 - 这是附件。您应该使用AttachmentHistoryInfoProvider
,而不是使用AttachmentInfoProvider
。使用文件的Guid和站点代码名称调用AttachmentInfoProvider.GetAttachmentInfo(Guid, string)
将返回AttachmentInfoObject
。我相信如果你启用了对象版本控制,AttachmentHistoryInfoProvider
只会返回给你的东西。对于来自附件的文件,我希望看到类似/getattachment/75408145-0995-45dc-943a-d27296a45327/nohandskitten.jpg.aspx
的网址。
这些InfoProviders做了根本不同的事情,只要你知道你正在寻找什么类型的信息,你应该能够选择正确的信息
如果您还没有,Kentico 7的API参考可能会有所帮助:https://devnet.kentico.com/docs/7_0/kenticocms_api.zip