【问题标题】:Umbraco 7 get media property valueUmbraco 7 获取媒体属性值
【发布时间】:2015-01-20 02:23:38
【问题描述】:

我是 Umbraco 7 和 MVC 的新手。我在媒体文件类型中添加了一个名为“teaser”的属性。当我上传媒体文件时,后台界面会识别新属性并允许我设置它的值。 但是,我无法弄清楚如何访问该值以在界面中使用。代码如下:

@if (CurrentPage.HasValue("audioFiles")) {
var audioIdList = CurrentPage.audioFiles.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var audioList = Umbraco.TypedMedia(audioIdList);
<ul class="audioFileList"> @{
foreach (var af in audioList) {
        <li>
            <a href="@af.Url">@af.Name</a><br />
            @af.teaser;
        </li>
    }
}
</ul>

}

当我运行此代码时,它会抛出一个错误,指出“'Umbraco.Web.Models.PublishedContentBase' 不包含'teaser' 的定义”。 Url 和 Name 检索得很好。只有添加的“预告片”才是问题所在。 谢谢 - 乔恩

【问题讨论】:

    标签: c# model-view-controller razor-2 umbraco7


    【解决方案1】:

    试试这个:

     @af.GetPropertyValue("teaser")
    

    如果您使用动态“CurrentPage”对象,则只能使用af.teaser。在这种情况下,您从 TypedList 继承,它为您提供强类型的 .Net 对象。这些不包含您的自定义属性。

    如果您更喜欢动态,则应将var audioList = Umbraco.TypedMedia(audioIdList); 替换为var audioList = Umbraco.Media(audioIdList);。这将为您提供一个动态对象。

    【讨论】:

    • 谢谢。解决方案是将 Umbraco.TypedMedia 更改为 Umbraco.Media。在此之前,两种解决方案都不起作用(实际上我也尝试过@af.GetPropertyValue,但没有成功。)之后,两种解决方案都起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多