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