Kentico 如何从codebehind中获取媒体项目的相对URL?

Kentico 如何从codebehind中获取媒体项目的相对URL?,kentico,Kentico,我有一个布局web部件,其中有一个“摘要”字段。“摘要”字段使用“媒体选择”窗体控件。在这种情况下,该字段设置为上载到其中一个站点媒体库的图像 我想呈现该图像,因此我尝试在codebehind中获取该图像的相对URL: if (Teaser != Guid.Empty) // Teaser is {8d7fa1ab-b304-474f-9ab9-2e17e8fee84f} { var mediaInfo = MediaFileInfoProvider.GetMediaFileInfo(T

我有一个布局web部件,其中有一个“摘要”字段。“摘要”字段使用“媒体选择”窗体控件。在这种情况下,该字段设置为上载到其中一个站点媒体库的图像

我想呈现该图像,因此我尝试在codebehind中获取该图像的相对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”获取此对象,如下所述:

祝你好运,如果你有更多的问题,你可以随时在StackOverflow或上问他们


如果这个答案对你有帮助,请投票支持我的答案:-)

谢谢@maartenvdh,问题是我在页面类型的“text=>media selection”和“file=>direct uploader”之间切换了字段。我想我一定是切换了类型,但没有保存我正在查看的页面或类似的内容,所以字段中仍然有一个文件GUID。将其切换到“text=>media selection”会直接在字段中提供我想要的URL。