【问题标题】:Passing parameters to a Razor View rendering in Sitecore将参数传递给 Sitecore 中的 Razor 视图渲染
【发布时间】:2015-02-14 02:34:43
【问题描述】:

我现在正在尝试渲染 Brightcove 媒体播放器,同时传递动态视频 ID。 BrightcoveData.Id 是一个有效的 guid,但我似乎无法正确传递参数,以便渲染理解它。我从该组件中收到一条错误消息,提示“未选择媒体项目。”

var embedMedia = new System.Collections.Specialized.NameValueCollection();
            embedMedia.Add("playerId", "E7766078969C3AB892DD158E0E7230B9");
            embedMedia.Add("width", "400");
            embedMedia.Add("height", "300");

            @Html.Sitecore().Rendering("/sitecore/layout/Renderings/Media Framework/Embed Media", new
                               {
                                   DataSource = brightcoveData.Id,
                                   Parameters = embedMedia
                               })

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 渲染的 HTML 输出是什么?看起来对吗?
  • 也尝试从视频 guid 中去掉花括号 {}。
  • 是的,渲染的 HTML 输出看起来正确。看起来我通过 DS 错误
  • @xoail - 删除花括号没有任何作用
  • 关注这个答案stackoverflow.com/questions/25597940/… 尝试从站点核心传递渲染,而不是使用数据源参数。

标签: .net razor sitecore brightcove


【解决方案1】:

我不认为你可以用这些参数覆盖默认属性。

Sitecore 将解析这些参数并将它们添加为KeyValuePair<string, object> 对象。您可以通过Rendering.Parameters访问此对象。

如果您不想设置自己的数据源和参数,则必须使用 Sitecore 中的演示详细信息并设置 数据源 那里。

【讨论】:

  • 我不同意ctor.io/…
  • @xoail 我查看了 SitecoreHelper 类,这就是它的作用:EnumerableExtensions.Each<KeyValuePair<string, object>>((IEnumerable<KeyValuePair<string, object>>) TypeHelper.GetProperties(parameters), (Action<KeyValuePair<string, object>>) (pair => rendering.Properties[pair.Key] = ObjectExtensions.ValueOrDefault<object, string>(pair.Value, (Func<object, string>) (o => o.ToString())))); 在我看来,它将参数作为属性添加到渲染中。我找不到任何会覆盖现有属性的内容。
  • 作为一种解决方法,我可以将嵌入媒体(使用我可以修改的现有 DS)添加到占位符中,并且仅将其显示为条件。我可能会尝试这种方法... 再给 Sitecore 支持 1-2 天的时间来得到答案
【解决方案2】:

好的,在与 Sitecore 支持人员交谈后,我得到了答复:

@Html.Sitecore().Rendering("/sitecore/layout/Renderings/Media Framework/Embed Media", new
                               {
                                   DataSource = brightcoveData.Id,
                                   Parameters = "playerid=E7766078969C3AB892DD158E0E7230B9&height=300&width=400"
                               })

brightcoveData.Id 只是一个 guid 字符串 = "{XXXX-...-etc}"。 playerid 是您正在使用的播放器的 Sitecore 项目 ID。

这就是最终代码的样子,而且效果很好!谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多