我有一个新闻列表,其中包含大量新闻项目。我试图让新闻列表的页面名称显示在每个新闻项目上,但这段代码并没有削减它。我收到一条错误消息,指出“Umbraco.Web.Models.RenderModel”不包含“AncestorOrSelf”的定义”

我希望它使用级别而不是 nodeID,因此它可以在其他页面上重复使用。这是我到目前为止所得到的:-

   @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "BasePage.cshtml";

    var sectionTitle = Model.AncestorOrSelf(2).pageName;
}
            <div id="contentHeader">
                <div class="row contentHeader">
                    <div class="col-md-6 page-title no-left-pad">
                        <h1>@sectionTitle</h1>
                    </div>
                    <div class="col-md-6 no-right-pad">
                        <a href="/care-homes" class="btn btn-care-profile pull-right">Use our CareFinder</a>
                    </div>
                </div>
            </div>

            @RenderBody()

感谢任何建议,因为我在任何地方都找不到错误的任何原因。

谢谢

最佳答案

我认为你应该寻找的是:

Model.Content.AncestorOrSelf(2).Name

Model 返回一个 RenderModel 对象,但您想要的是 IPublishedContent 对象,您可以在 Model.Content 属性中找到它。

您当然应该在尝试访问名称之前执行空检查,例如
if(Model.Content.AncestorOrSelf(2) != null)
{
    sectionTitle = Model.Content.AncestorOrSelf(2).Name;
}

关于razor - Umbraco AncestorOrSelf 从 Model 中消失了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22447324/

10-13 08:44