Kentico中的页面列表

时间:2017-05-05 10:41:26

标签: c# asp.net content-management-system kentico

在我的Kentico网站上,我有一个页面,其中包含指向其他页面的链接列表。让我们说文章。我的aspx页面上有一个转发器,下面的代码填充它。 它有效,但我认为这是一种黑客行为。有没有更好的方法呢?

protected void Page_Load(object sender, EventArgs e)
{
    var dataSource = DocumentHelper.GetDocuments("custom.CustomPressRelease")
        .Select(x => new
        {
            Link = GetUrl(x),
            PublishFrom = x.GetValue("DateIssued"),
            Title = x.GetValue("ContentTitle"),
            Teaser = x.GetValue("TeaserText"),
            GeoCoverage = x.GetValue("GeoCoverage")
        })
        .OrderByDescending(x => x.PublishFrom);

    Repeater.DataSource = dataSource;
    Repeater.DataBind();
}

2 个答案:

答案 0 :(得分:1)

那么,是什么让你认为它是一个黑客?这是您以编程方式执行此操作的方式。如果您想使用the docs实现相同的功能,您可以添加转发器Web部件,设置其过滤器和转换,然后您就可以完成了。或者您可以使用基本的转发器Web部件并将其绑定到页面数据源。

您还可以结合ASPX模板+门户引擎方法 - 您仍然可以拥有自己的ASPX页面并使用内置的Web部件(转发器,基本中继器,数据源......)它们是标准的ASCX控件。你只需要正确设置它们。它不应该是一个问题,你在门户引擎中看到的属性通常是1:1。

答案 1 :(得分:1)

没有关于你发布的内容的黑客。在documentation hereObjectQuery documentation here中,它还显示了另一种获取信息的方式:

// Creates an instance of the Tree provider
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

// Gets the published version of pages stored under the "/Articles/" path
// The pages are retrieved from the Dancing Goat site and in the "en-us" culture
var pages = tree.SelectNodes()
    .ClassNames("custom.CustomPressRelease")
    .Path("/Articles/", PathTypeEnum.Children)
    .WhereLike("DocumentName", "Coffee%")
    .Columns("NodeAliasPath", "DateIssued", "ContentTitle", "TeaserText", "GeoCoverage")
    .OnSite("DancingGoat")
    .Culture("en-us");