我已经接管了建立在Umbraco 7.6.3中的网站的管理,并且构建该系统的公司已使用了传统的.Net MVC。这意味着Umbraco固有的许多功能都将丢失。
我需要能够渲染使用Media.Picker选择的图像,但是唯一可以找到有关访问该对象的任何文档的地方都要求我在umbraco中使用@Model
才能解决Url所选图像的
如果我尝试通过继承使用标准的Umbraco模型
@inherits Umbraco.Web.Mvc.UmbracoViewPage
我收到以下错误消息:因为集成了该系统的公司远远超出了Umbraco的最佳做法,并且为网站中的所有页面建立了自己的模型...
无法绑定源类型 ClassName.Web.ViewModels.Templates.HomeViewModel到模型类型 Umbraco.Core.Models.IPublishedContent。
我正在使用部分视图构建页面的所需部分
任何建议对我来说都是非常有用的吗?? !!!
在下面的代码中,@ogimageId.ToString()
返回以下内容
[ Umbraco.Web.PublishedCache.XmlPublishedCache.PublishedMediaCache+DictionaryPublishedContent ]
而且我不知道如何直接从该对象获取URL或它的ID,以便我可以使用其下面的方法从图像ID获取URL。
@using Umbraco.Web;
@using Umbraco.Web.Extensions;
@using ClientDependency.Core.Mvc;
@{
dynamic ogimageId = Umbraco.Field("ogimage", recursive: true);
<!-- ogimageUrl: @ogimageId.ToString() -->
string ogimage = Umbraco.Media(1143).umbracoFile.ToString();
}
<meta property="og:image" content="@ogimage" />
答案 0 :(得分:0)
所以我在所有人没有机会回应之前就弄清楚了... 这是解决方案...没意识到会这么简单... Html.Raw为您转换ID。
string ogimageId = Html.Raw(Umbraco.Field("ogimage", recursive: true)).ToString();
string ogimage = Umbraco.Media(ogimageId).umbracoFile.ToString();
答案 1 :(得分:-1)
您可以使用MediaService
来访问媒体。
@ApplicationContext.Current.Services.MediaService.GetById(1143).GetValue<string>("umbracoFile")
然后从该json字符串中提取网址。
dynamic media = JsonConvert.DeserializeObject(ApplicationContext.Current.Services.MediaService.GetById(1068).GetValue<string>("umbracoFile"));
最后,@media.src
将为您提供URL。