Sitecore Glassmapper, как получить источник данных из рендеринга

нужно предложение по рендерингу Sitecore, где я хочу использовать стеклянную модель для рендеринга элемента.

У меня есть страница, на которой много визуализаций, и каждая визуализация имеет связанный с ней источник данных.

Я знаю, что приведенный ниже оператор даст мне текущий контекст, а не элемент источника данных.

var context = new SitecoreContext();
            Model = context.GetCurrentItem<HomePage>();

Каков наилучший вариант решения моего вопроса? Я прошел через это статья. Но я действительно не уверен в этом методе, так как я использую IoC (Виндзорский замок) и должен писать тестовые примеры для каждого метода. Возможно, позже мне придется издеваться над этими объектами. Я ищу подход, при котором я буду использовать интерфейс, а не класс.

Ценю твою помощь.


person PaRsH    schedule 08.11.2016    source источник


Ответы (3)


Если ваш контроллер является производным от GlassController, вы можете использовать GetDataSourceItem<I..>(). Это даст вам источник данных.

person Gatogordo    schedule 08.11.2016
comment
Это именно то, что я искал. Спасибо @Gatogordo - person PaRsH; 09.11.2016

Если вы используете Glass Mapper 5, в документации больше не упоминается об использовании GlassController. Вы можете использовать IMvcContext, как показано ниже:

using System.Web.Mvc;
using Glass.Mapper.Sc.Web.Mvc;

public class TitlesController : Controller
{
    public ActionResult Index()
    {
        IMvcContext mvcContext = new MvcContext();

        // will return the DatasourceItem if set, otherwise the page context is returned
        Titles model = mvcContext.GetRenderingItem<Titles>();

        Titles dsModel = mvcContext.GetDataSourceItem<Titles>();

        return View(model);
    }
}
person nologo    schedule 23.01.2019

Добавление к ответу Гатогородо

если ваш контроллер является производным от GlassController или если вы находитесь в GlassView, вы можете использовать this.DatasourceItem для получения источника данных.

this.GetDataSourceItem<Model>() даст вам желаемую модель, которая может быть одним из базовых шаблонов для шаблона элемента.

person Dheeraj Palagiri    schedule 10.11.2016