需要有关Sitecore渲染的建议,我想使用glassmodel渲染项目。
我有一个页面,它有很多渲染,每个渲染都有与之关联的数据源。
我知道下面的语句会给我当前的上下文,而不是数据源项。
var context = new SitecoreContext();
Model = context.GetCurrentItem<HomePage>();
解决我的查询的最佳选择是什么?我通过了this文章。但我真的不相信这种方法,因为我使用IoC(温莎城堡)并且必须为每种方法编写单元测试用例。我可能不得不在以后模拟这些对象。我正在寻找我将使用Interface而不是类的方法。
感谢您的帮助。
答案 0 :(得分:2)
如果您的控制器来自GlassController
,则可以使用GetDataSourceItem<I..>()
。这将为您提供数据源。
答案 1 :(得分:0)
添加到Gatogorodo的回答
如果您的控制器是从GlassController派生的,或者如果您使用的是GlassView,则可以使用ngForTemplate
来获取数据源。
this.DatasourceItem
会为您提供所需的模型,该模型可能是项目模板的基本模板之一。
答案 2 :(得分:0)
如果使用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);
}
}