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);
}
}
需要有关 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);
}
}