【问题标题】:Is there a way to access the media picker without using @Model in Umbraco 7.6.3有没有办法在 Umbraco 7.6.3 中不使用 @Model 来访问媒体选择器
【发布时间】:2018-12-29 14:47:42
【问题描述】:

我已经接管了一个在 Umbraco 7.6.3 中构建的网站的管理工作,而构建该系统的公司使用了传统的 .Net MVC。这意味着 Umbraco 的大部分原生功能都丢失了。

我需要能够渲染使用 Media.Picker 选择的图像,但是我可以找到有关访问该对象的任何文档的唯一地方都要求我在 umbraco 中使用 @Model 以解析选择的图像。

如果我尝试通过继承来使用标准 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" />

【问题讨论】:

    标签: model umbraco media picker


    【解决方案1】:

    所以我在任何人有机会回应之前就想通了…… 这是解决方案......没有意识到它会这么简单...... Html.Raw 为您转换 id。

    string ogimageId = Html.Raw(Umbraco.Field("ogimage", recursive: true)).ToString(); string ogimage = Umbraco.Media(ogimageId).umbracoFile.ToString();

    【讨论】:

    • 看看我对另一个答案的评论 - 这稍微好一些,但是使用 UmbracoHelper 是普遍接受的方式。
    【解决方案2】:

    您可以使用MediaService 访问媒体。

    @ApplicationContext.Current.Services.MediaService.GetById(1143).GetValue<string>("umbracoFile")
    

    然后从那个 json 字符串中提取 url。

    dynamic media = JsonConvert.DeserializeObject(ApplicationContext.Current.Services.MediaService.GetById(1068).GetValue<string>("umbracoFile"));
    

    最后,@media.src 会给你网址。

    【讨论】:

    • 更好的方法是使用 UmbracoHelper - 但是,如果您不使用 UmbracoSurfaceControllerUmbracoViewPage,则可能必须创建一个实例:var Umbraco = new UmbracoHelper(UmbracoContext.Current); 然后您可以使用 @987654328 @等
    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多