当前位置:  开发笔记 > 编程语言 > 正文

如何从Umbraco API控制器ASP.NET获取已发布的内容

如何解决《如何从UmbracoAPI控制器ASP.NET获取已发布的内容》经验,为你挑选了1个好方法。

我在Umbraco后台存储了一些电子邮件模板(意思是样本,不要与umbraco模板混淆).在某些时候,我需要使用此模板(主题,正文,cc,密件抄送等)发送电子邮件.为此,我使用自动生成的模型,这需要IPublishedContent初始化.

因此我无法初始化此模型,因为我无法获得类型的内容IPUblishedContent.

当我通过Id得到它一切正常.但我不想依赖于id,因为它改变并决定使用路径而不能这样做.执行以下命令时,我得到NullReferenceException:

 contentCache.GetByRoute(true, "relative path to email template")//I think I am mistaken here as I am using cache

相对路径看起来像"/settings/emailtemplate/registrationtemplate"任何人都可以指出我如何实现这一点,因为我是Umbraco的新手,并努力了解我应该如何做某些事情.


我最初尝试的另一种方法(也不成功)是按doc type id获取内容

 var contentService = umbracoContext.Application.Services.ContentService;
 var contentTypeService = umbracoContext.Application.Services.ContentTypeService;
 var contentType = contentTypeService.GetContentType("emailSettings");
 var templates = contentService.GetContentOfContentType(contentType.Id);

然后我从ContentService获取内容:

 var content = templates.FirstOrDefault(c => c.Name.Contains("Registration"));
 var publishedContent = contentService.GetById(content.Id)

但在这里,我得到了publishedContent,IContent并没有办法将其转换为IPublishedContent.


更新1

我发现原因是我试图从Umbraco API控制器获取已发布的内容.所以问题是有没有办法从api获取发布的内容



1> Ashkan Sirou..:

你没有提到Umbraco,但你可以像这样使用UmbracoHelper.

IPublishedContent content = UmbracoHelper.TypedContent(content.Id);

如果您无法访问UmbracoHelper,请执行以下操作:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有