我的术语可能会稍微偏离,因为我是新的Sitecore。我试图用硬编码数据源对视图呈现进行硬编码(对于其他需求,我必须这样做),这个视图呈现有动态设置的占位符,然后是个性化的。
如何触发项目上的ViewRendering?
我尝试过ItemRendering,但它似乎没有收集PageEditor中设置的内容。
*需要明确的是,下面这些有用的帖子具有呈现功能,但是我们似乎没有得到个性化的数据源。*
发布于 2015-05-08 02:51:14
我相信这就是你想要的
Item item = /* think you already have this */;
// Setup
var rendering = new Sitecore.Mvc.Presentation.Rendering {
RenderingType = "Item",
Renderer = new Sitecore.Mvc.Presentation.ItemRenderer.ItemRenderer {
Item = item
}
};
rendering["DataSource"] = item.ID.ToString();
// Execution
var writer = new System.IO.StringWriter();
var args = new Sitecore.Mvc.Pipelines.Response.RenderRendering(rendering, writer);
Sitecore.Mvc.Pipelines.PipelineService.Get().RunPipeline("mvc.renderRendering", args);
// Your result:
var html = writer.ToString();发布于 2015-05-07 21:03:10
您可以使用Sitecore的Rendering()方法静态地绑定视图呈现。这也适用于使用相同方法的Controller呈现。
@Html.Sitecore().Rendering("<rendering item id>")此方法接受匿名对象来传递参数,例如Datasource和缓存选项。
@Html.Sitecore().Rendering("<rendering item id>", new { DataSource = "<datasource item id>", Cacheable = true, Cache_VaryByData = true })在您的视图呈现中,我假设您已经定义了一个占位符,并在Sitecore中定义了适当的占位符设置(如果不是,请随意评论并提供更多细节,我将更新我的答案)。
@Html.Sitecore().Placeholder("my-placeholder")在这种情况下,“我的占位符”将像任何其他占位符一样被处理,因此您将能够从Page添加和个性化其中的组件。
https://stackoverflow.com/questions/30110788
复制相似问题