Sitecore glassmapper 如何从渲染中获取数据源

Sitecore glassmapper how to fetch the datasource from the rendering

需要有关 Sitecore 渲染的建议,我想在其中使用 glassmodel 来渲染项目。

我有一个页面,其中有很多效果图,每个效果图都有与之关联的数据源。

我知道下面的语句会给我当前上下文,而不是数据源项。

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

解决我的查询的最佳选择是什么?我给通读了 this 篇文章。但我真的不相信这种方法,因为我正在使用 IoC(温莎城堡)并且必须为每种方法编写单元测试用例。稍后我可能不得不模拟这些对象。我正在寻找我将使用接口而不是 class.

的方法

感谢您的帮助。

如果您的控制器源自 GlassController,您可以使用 GetDataSourceItem<I..>()。这将为您提供数据源。

添加到 Gatogorodo 的回答

如果您的控制器派生自 GlassController,或者如果您在 GlassView 中,则可以使用 this.DatasourceItem 获取数据源。

this.GetDataSourceItem<Model>() 将为您提供所需的模型,它可能是项目模板的基本模板之一。

如果您使用 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);
    }
}