Sitecore 7 MVC使用项目的演示详细信息从控制器创建部分渲染

时间:2013-12-10 00:34:04

标签: c# asp.net-mvc asp.net-mvc-3 sitecore

使用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'下创建项目,然后在我的内容项的链接字段中引用该项,但它看起来应该是开箱即用。

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这里的意图,所以这可能只是部分答案,但是当您想要根据项目本身中包含的布局信息呈现项目时,项目渲染能够帮助?

以下是信息:http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2012/06/MVC-Item-Renderings-in-the-Sitecore-ASPNET-CMS.aspx

我意识到返回部分视图会比项目渲染路径更灵活,但在正常情况下(即向页面添加标注),似乎此方法可能有效。

答案 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);
}