我有一个布局web部件,其中有一个"Teaser"字段。"Teaser"字段使用"媒体选择"表单控件。在本例中,该字段被设置为上传到某个站点媒体库的图像。
我想渲染那张图片,所以我试图在代码后面获得它的相对URL:
if (Teaser != Guid.Empty) // Teaser is {8d7fa1ab-b304-474f-9ab9-2e17e8fee84f}
{
var mediaInfo = MediaFileInfoProvider.GetMediaFileInfo(Teaser, SiteContext.CurrentSiteName);
// mediaInfo is null so the next line crashes
var libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(mediaInfo.FileLibraryID);
string url = MediaFileURLProvider.GetMediaFileUrl(mediaInfo, SiteContext.CurrentSiteName, libraryInfo.LibraryFolder);
"mediaInfo"变量为空,因此代码崩溃。
如何获得媒体文件的相对URL ?
不能添加"媒体选择";表单控件与字段类型Guid结合使用。然后,如果您只需要Guid,则需要创建一个自定义表单控件。
但是一个更好的解决方案是添加一个数据类型为&;text的字段&;并结合表单控件"媒体选择"然后在从媒体库中选择图像时直接在字段内添加相对URL。
如果您还需要MediaInfo,那么您可以使用参数"mediaFilePath"获取该对象,如下所述:https://devnet.kentico.com/docs/8_2/api/html/M_CMS_MediaLibrary_MediaFileInfoProvider_GetMediaFileInfo_3.htm
祝你好运,如果你有更多的问题,你可以在StackOverflow或http://devnet.kentico.com/questions-answers上问他们。