【问题标题】:Getting ID of Sitecore control from controller从控制器获取 Sitecore 控件的 ID
【发布时间】:2015-12-02 18:11:27
【问题描述】:

我正在尝试获取与 MVC 控制器内 Sitecore 中的控件实例关联的字段值。我似乎很难找到正确的语法。

我试过这个我试过在 Sitecore 控件 MVC 控制器中使用它,但它返回一个“Item”的空引用异常:

Guid campaignID = new Guid(Constants.Marketing.CAMPAIGNID);
Sitecore.Mvc.Presentation.RenderingContext renderingContext = new Sitecore.Mvc.Presentation.RenderingContext();
string currentCampaign = renderingContext.PageContext.Item.Fields[campaignID.ToString()].Value;

【问题讨论】:

    标签: sitecore sitecore8 sitecore-mvc


    【解决方案1】:

    您不应创建RenderingContext 类的新实例。

    您应该使用RenderingContext.Current。试试下面的代码:

    Item datasourceOrContextItem = RenderingContext.Current.Rendering.Item;
    string currentCampaign = datasourceOrContextItem[campaignID.ToString()].
    

    【讨论】:

      【解决方案2】:

      我建议控制器有一个如下所示的基本控制器:

        public class ControllerBase : Controller
        {
          /// <summary>
          /// Gets the current rendering.
          /// </summary>
          /// <value>
          /// The Sitecore controller rendering.
          /// </value>
          protected virtual Rendering Rendering
          {
              get
              {
                  return RenderingContext.CurrentOrNull != null ? RenderingContext.Current.Rendering : null;
              }
          }
        }
      

      当您创建一个新的控制器时,它会从它继承,并且您将在渲染时拥有该项目的数据源。

      【讨论】:

        猜你喜欢
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多