我有一个Web服务,我想在其中检索某种内容类型的所有文档,但是作为强类型对象。我试着用这个:
var contentType = Services.ContentTypeService.GetContentType(PensionPoint.ModelTypeAlias);
var points = Services.ContentService.GetContentOfContentType(contentType.Id).ToList();
但是,我得到了IContent对象,我无法做Object.Property。我如何检索相同的项目,但作为强类型对象?
答案 0 :(得分:4)
您使用的是错误的Umbraco API,您需要使用Umbraco Helper来检索已发布的内容项,而不是返回返回IContent
项的Service API。
var umbracoHelper =
new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
var pensionPoints =
umbracoHelper.TypedContentAtRoot().First().Descendants<PensionPoint>();
当然,如果您的代码位于控制器或视图中,您可以直接获得UmbracoHelper
实例。
另外,请注意上面的代码假设您的内容位于单个“主页”节点下。
最后,如果您的网站包含大量内容,性能可能不会很好,在这种情况下,您可能希望使用XPATH查询并将结果转换为您的类。