如何按具体方式获取所有节点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很好用.怎么解决?
您可以使用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等...