我们要使用UmbracoHelper, 这里就需要用到我们在之前的blog里面写的UmbracoContext
参看这个blog https://www.cnblogs.com/wphl-27/p/9927044.html
public class ContextHelpers { public static UmbracoContext EnsureUmbracoContext() {
if(UmbracoContext != null) { return UmbracoContext.Current; } var dummyHttpContext = new HttpContextWrapper(new HttpContext(new SimpleWorkerRequest("blah.aspx", "", new StringWriter()))); return UmbracoContext.EnsureContext( dummyHttpContext, ApplicationContext.Current, new WebSecurity(dummyHttpContext, ApplicationContext.Current), UmbracoConfig.For.UmbracoSettings(), UrlProviderResolver.Current.Providers, false); } }
1. 在View 中
在View中写如下代码
UmbracoHelper uHelper = new UmbracoHelper(ContextHelper.EnsureUmbracoContext()); string mediaUrl = ""; if (CurrentPage.HasValue(propertyName)) { var mediaItem = uHelper.Media(CurrentPage.propertyName.ToString()); mediaUrl = mediaItem.umbracoFile; } return mediaUrl;
2. 在后台代码中写
using Umbraco.Web; public static string GetMediaUrlFromPropertyName(dynamic contentItem, string propertyName) { UmbracoHelper uHelper = new UmbracoHelper(ContextHelper.EnsureUmbracoContext()); string mediaUrl = ""; if (contentItem.HasValue(propertyName)) { var mediaItem = uHelper.Media(contentItem.GetPropertyValue(propertyName)); mediaUrl = mediaItem.umbracoFile; } return mediaUrl; }
原文请参看 https://codeshare.co.uk/blog/how-to-get-the-file-path-of-a-media-item-in-umbraco/