我如何从我的代码背后获得一个媒体项目的相对URL ?



我有一个布局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上问他们。

最新更新