2015-11-25 2 views
1

Я пытаюсь получить значение поля, связанное с экземпляром элемента управления в Sitecore в контроллере MVC. Кажется, я пытаюсь найти правильный синтаксис.Получение идентификатора элемента управления Sitecore от контроллера

Я попытался это я пытался использовать это в Sitecore управления контроллером MVC, но он возвращается с нулевым опорным исключением для «Пункта»:

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

Вы не должны создать новый экземпляр RenderingContext класса.

Вы должны использовать RenderingContext.Current. Попробуйте код ниже:

Item datasourceOrContextItem = RenderingContext.Current.Rendering.Item; 
string currentCampaign = datasourceOrContextItem[campaignID.ToString()]. 
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, источник данных из пункт.

Смежные вопросы