Sitecore,在mvc中以带有个性化设置的代码呈现项

Sitecore,在mvc中以带有个性化设置的代码呈现项,sitecore,sitecore-mvc,Sitecore,Sitecore Mvc,我的术语可能有点偏离,因为我是Sitecore mvc的新手。我正在尝试使用硬编码数据源硬编码视图渲染(对于其他需求,我必须这样做)。此视图渲染具有动态设置然后个性化的占位符 如何在项目上触发ViewRendering 我已经尝试过ItemRendering,但它似乎无法获取页面编辑器中设置的内容 *要清楚,下面的有用帖子可以进行渲染,但我们似乎没有得到个性化的数据源*您可以使用Sitecore HTML帮助程序的Rendering()方法静态绑定视图呈现。这也适用于使用相同方法的控制器渲染 @

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

如何在项目上触发ViewRendering

我已经尝试过ItemRendering,但它似乎无法获取页面编辑器中设置的内容


*要清楚,下面的有用帖子可以进行渲染,但我们似乎没有得到个性化的数据源*

您可以使用Sitecore HTML帮助程序的
Rendering()
方法静态绑定视图呈现。这也适用于使用相同方法的控制器渲染

@Html.Sitecore().Rendering("<rendering item id>")
在这种情况下,“我的占位符”将像其他占位符一样处理,因此您可以从页面编辑器中添加和个性化其中的组件。

我相信这就是您所追求的:

Item=/*我想你已经有了这个*/;
//设置
var rendering=new Sitecore.Mvc.Presentation.rendering{
RenderingType=“项目”,
Renderer=new Sitecore.Mvc.Presentation.ItemRenderer.ItemRenderer{
项目=项目
}
};
呈现[“数据源”]=item.ID.ToString();
//执行
var writer=new System.IO.StringWriter();
var args=new Sitecore.Mvc.Pipelines.Response.renderrenderrendering(呈现,编写器);
Sitecore.Mvc.Pipelines.PipelineService.Get().RunPipeline(“Mvc.renderRendering”,args);
//您的结果:
var html=writer.ToString();

实际上,德里克,也许我问错了问题。我想呈现一个项目,就好像它是一个新的html请求一样。使用在那个项目上设置的布局和个性化规则。啊,我想我误解了你最初的问题。您正试图以编程方式执行此操作,对吗?您是想要项目的完整HTML,还是只关心特定的呈现?我想两者都可以。现在,我有一个布局分配给项目,其中有我需要的。我很乐意使用渲染,但它只是没有获取布局细节和个性化规则。这得到了控制,但不是我的个性化规则。也许我的问题在于实际的内容设置?如何在ItemRendering上设置个性化规则?我唯一想做的事情就是传递布局细节(因为它们定义了什么在什么时候进入哪个占位符),但这需要在特定页面的上下文中进行(因为它们显然会因页面而异)。但是,在项目级别,您可能非常有限(除非您自定义了模板以添加规则字段(然后在呈现之前根据该规则上下文执行)。)知道我的意思吗?我想我读了一篇来自sitecore的文章,对最终用户来说似乎有点复杂。您知道执行另一个页面的结果并将其添加到当前页面的方法吗?UrlRenderer的工作原理是这样的,但是您会丢失原始的用户信息。我可以问一下最初的意图是什么吗?我们试图解决的要求基本上是尝试个性化标题的子视图,例如促销。更棘手的问题是,标题的控制器中有一个数据源规则,迫使我们使用ViewRendering/ItemRendering。为了设置规则,我在项目中添加了一个空心布局,允许我们设置规则。除此之外,我还尝试了很多其他方法,但实际上只是一种反复尝试。我倾向于删除静态视图,将自定义控制器规则移动到个性化引擎中,然后使用个性化引擎在页面编辑器中进行设置。
@Html.Sitecore().Rendering("<rendering item id>", new { DataSource = "<datasource item id>", Cacheable = true, Cache_VaryByData = true })
@Html.Sitecore().Placeholder("my-placeholder")