Sitecore,在代码中使用mvc中的个性化渲染项目

时间:2015-05-07 20:11:30

标签: sitecore sitecore-mvc

由于我是Sitecore mvc的新手,我的术语可能略有偏差。我正在尝试使用硬编码数据源对视图渲染进行硬编码(我必须这样做以满足其他要求)此视图渲染具有动态设置然后个性化的占位符。

如何在项目上触发ViewRendering?

我已经尝试过ItemRendering,但它似乎没有找到PageEditor中设置的内容。

*为了清楚起见,下面的有用帖子让渲染工作正常,但我们似乎没有获得个性化数据源。 *

2 个答案:

答案 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;将像任何其他占位符一样处理,因此您可以从页面编辑器中添加和个性化其中的组件。