如何在EpiServer CMS的内容区域中呈现列出项目(如新闻项目)的页面

时间:2016-06-17 10:35:40

标签: asp.net-mvc asp.net-mvc-4 episerver episerver-7 episerver-8

我想在内容区域中显示项目列表(我使用页面列表块来显示页面列表。)当我在内容区域中拖放页面类型时,我收到一条错误说明&#34 ; Castle.Proxies.ListingBlockProxy"

以下是我的代码......

HomeBlockPage.cs

public class HomeBlocksPage : SitePageData
    {
        [Display(Name = "Main Listing", Description = "A listing of news pages", GroupName = SystemTabNames.Content, Order = 315)]
        public virtual ListingBlock MainListing { get; set; }
    }

查看模型类 - ListingBlockModel.cs

public class ListingBlockModel
    {
        public ContentReference PageImage { get; set; }
        public IEnumerable<SitePageData> Items { get; set; }

    }

ListingBlock的Index.cshtml

@if (Model.Items != null) {
    foreach (var item in Model.Items)
    {
        <div class="list">

            <p><img src="@Url.ContentUrl(item.PageImage)"/></p>

            <h3>@Html.PageLink(item)</h3>

            @if (item.Property["MainBody"] != null)
            {
                @item.Property["MainBody"].Value
            }
            <hr />
        </div>
    } }

为了在内容区域中显示或呈现项目列表(页面列表),我已经为页面创建了部分模板。

PagePartialController.cs

  [TemplateDescriptor(Inherited = true)]
    public class PagePartialController : PartialContentController<HomeBlocksPage>
    {
        public  override ActionResult Index(HomeBlocksPage currentContent)
        {
            return PartialView("/Views/Shared/PagePartials/PagePartial.cshtml",currentContent);
        }
    }

PagePartial.cshtml

@model WesleyanSite.Models.Pages.HomeBlocksPage

    <div class="span12">
        <a href="@Url.PageUrl(Model.LinkURL)">
            @Model.MainListing
                </a>
    </div>

当我在编辑模式下将页面拖放到内容区域时,我收到错误&#34; Castle.Proxies.ListingBlockProxy&#34;

1 个答案:

答案 0 :(得分:1)

你确定这是一个错误吗? MainListing是ListingBlock的属性类型,它在运行时变为ListingBlockProxy。 如果你只在标记中使用@ Model.MainListing,那么输出可能是“Castle.Proxies.ListingBlockProxy”。如果您尝试使用@ Html.PropertyFor(x =&gt; x.MainListing)显示它,则可能会在其余代码正常的情况下显示。