umbraco - 如何按文档类型获取所有节点

who*_*oah 3 umbraco

如何按具体方式获取所有节点Document Type

例如,我想在所有节点后面使用代码Document Type: s3Article.我怎样才能做到这一点?


新信息:

    IEnumerable<Node> nodes = uQuery.GetNodesByType("s3Article").Where(x => x.NiceUrl.Contains("en"));

    lvArticles.DataSource = nodes;
    lvArticles.DataBind();
Run Code Online (Sandbox Code Playgroud)

这是我的代码.我不得不使用Where(x => x.NiceUrl.Contains("en")),因为我有2个语言版本 - 没有Where我收到所有带doctype的目录中的节点s3Article,但我想只从一个语言版本获得.

问题在这里:

<a href='<%# umbraco.library.NiceUrl(Tools.NumericTools.tryParseInt( Eval("id"))) %>'><%# Eval("title")%></a>
<%# Tools.TextTools.makeIMGHTML("../.."+ Eval("img").ToString(),"180") %>
<%# umbraco.library.StripHtml(Limit(Eval("Article"), 1000))%>
<%# Eval("author")%>
Run Code Online (Sandbox Code Playgroud)

System.Web.HttpException:DataBinding:'umbraco.presentation.nodeFactory.Node'不包含名为'title'的属性.

标题,img,文章,作者也会出现同样的问题.只有ID很好用.怎么解决?

Dou*_*low 6

您可以使用uQuery GetNodesByType(string or int)方法:

IEnumerable<Node> nodes = uQuery.GetNodesByType("s3Article");
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用扩展方法获取所有后代节点,然后按类型查询它们,如以下答案所示:

Umbraco 4.6+ - 如何通过C#中的doctype获取所有节点?


您可以使用它来数据绑定到usercontrol中的控件,如下所示:

lvArticles.DataSource = nodes.Select(n => new {
    ID: n.Id,
    Title: n.GetProperty("title").Value,
    Author: n.GetProperty("author").Value,
    Article: n.GetProperty("article").Value,
    Image: n.GetProperty("img").Value,
});
lvArticles.DataBind();
Run Code Online (Sandbox Code Playgroud)

只有你需要在select语句中去除html,将图像id转换为url等...