从控制器获取Sitecore控件的ID

时间:2015-11-25 15:24:43

标签: sitecore sitecore8 sitecore-mvc

我试图在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;

2 个答案:

答案 0 :(得分:2)

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

您应该使用RenderingContext.Current。请尝试以下代码:

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

答案 1 :(得分:1)

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

  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;
        }
    }
  }

当您创建一个新的控制器继承它时,您将拥有该项的数据源Rendering。