使用MVC创建控制器时,Sitecore 7中是否有某种方法可以使用在项目上定义的渲染(或其模板标准值)返回PartialView结果,而无需为该项目设置布局和渲染?
我可以看到如何使用自定义模板字段执行此操作,但这似乎是一种hacky做事方式。有没有更好的方法来实现以下目标:
public PartialViewResult MyAction(string someParameter)
{
Item selectedItem;
//some code here to retrieve sitecore item based on the value of someParameter
var cshtmlFilePath = selectedItem["MyCustomField"];
return PartialView(cshtmlFilePath, selectedItem);
}
仅供参考我的cshtml可能非常简单:
@model Sitecore.Data.Items.Item
<div>
<h3>
@Html.Sitecore().Field("Title", Model)
</h3>
<div>
@Html.Sitecore().Field("Content", Model)
</div>
</div>
虽然上面的方法可行,但我不喜欢它,因为没有适当的接口将渲染分配给项目模板的标准值。我可以很容易地定义我自己的演示模板,它有一个'Path'字段,然后在`sitecore / layout / Renderings'下创建项目,然后在我的内容项的链接字段中引用该项,但它看起来应该是开箱即用。
答案 0 :(得分:0)
我不确定我是否完全理解这里的意图,所以这可能只是部分答案,但是当您想要根据项目本身中包含的布局信息呈现项目时,项目渲染能够帮助?
我意识到返回部分视图会比项目渲染路径更灵活,但在正常情况下(即向页面添加标注),似乎此方法可能有效。
答案 1 :(得分:0)
一种解决方案是简单地将布局(引用cshtml文件)分配给项目,然后使用item.Visualization
获取分配给项目的布局的文件路径,并在调用中使用该布局的cshtml文件到PartialView
。
public PartialViewResult MyAction(string contentItem)
{
Item selectedItem;
//retrieve sitecore item
string layoutPath = selectedItem.Visualization.Layout.FilePath;
return PartialView(layoutPath, modalContentItem);
}