在我的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();
}
答案 0 :(得分:1)
那么,是什么让你认为它是一个黑客?这是您以编程方式执行此操作的方式。如果您想使用the docs实现相同的功能,您可以添加转发器Web部件,设置其过滤器和转换,然后您就可以完成了。或者您可以使用基本的转发器Web部件并将其绑定到页面数据源。
您还可以结合ASPX模板+门户引擎方法 - 您仍然可以拥有自己的ASPX页面并使用内置的Web部件(转发器,基本中继器,数据源......)它们是标准的ASCX控件。你只需要正确设置它们。它不应该是一个问题,你在门户引擎中看到的属性通常是1:1。
答案 1 :(得分:1)
没有关于你发布的内容的黑客。在documentation here和ObjectQuery 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");