由于我是Sitecore mvc的新手,我的术语可能略有偏差。我正在尝试使用硬编码数据源对视图渲染进行硬编码(我必须这样做以满足其他要求)此视图渲染具有动态设置然后个性化的占位符。
如何在项目上触发ViewRendering?
我已经尝试过ItemRendering,但它似乎没有找到PageEditor中设置的内容。
*为了清楚起见,下面的有用帖子让渲染工作正常,但我们似乎没有获得个性化数据源。 *
答案 0 :(得分:4)
我相信这就是你之后的事情:
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();
答案 1 :(得分:1)
您可以使用Sitecore HTML Helper的Rendering()
方法静态绑定视图渲染。这也适用于使用相同方法的Controller Renderings。
@Html.Sitecore().Rendering("<rendering item id>")
此方法接受一个匿名对象来传入参数,例如数据源和缓存选项。
@Html.Sitecore().Rendering("<rendering item id>", new { DataSource = "<datasource item id>", Cacheable = true, Cache_VaryByData = true })
在您的视图渲染中,我假设您在Sitecore中定义了占位符以及相应的占位符设置(如果没有,请随时更详细地评论,我将更新我的答案)。
@Html.Sitecore().Placeholder("my-placeholder")
在这种情况下,&#34; my-placeholder&#34;将像任何其他占位符一样处理,因此您可以从页面编辑器中添加和个性化其中的组件。