我正在尝试保存名为IContent
的{{1}},但在这一行(child
)上出现以下错误:contentService.SaveAndPublish(child);
Object reference not set to an instance of an object.
这就是我定义if (child.HasProperty("navn"))
{
child.SetValue("navn", worker.Name.ToString(), "da-dk");
}
contentService.SaveAndPublish(child);
的方式:
contentService
我正在找到这样的孩子:
IContentService contentService = Umbraco.Core.Composing.Current.Services.ContentService;
´ 有人可以指出这里有什么问题吗?
答案 0 :(得分:4)
我相信您以错误的方式获取ContentService,因此它可能为空,从而导致空引用异常。
如果您在SurfaceController中,则可以这样获得ContentService:
var cs = Services.ContentService;
如果您所在的班级没有公开服务,则可以这样获得:
var cs = ApplicationContext.Current.Services.ContentService;
在下面的Umbracos文档中了解有关此内容的更多信息:)
https://our.umbraco.com/documentation/Reference/Management/Services/ContentService/
答案 1 :(得分:3)
我发现,如果执行此操作,它将起作用。
var umbf = Umbraco.Web.Composing.Current.Factory.GetInstance<IUmbracoContextFactory>();
using (var contextf = umbf.EnsureUmbracoContext())
{
var umbcontext = contextf.UmbracoContext;
IContentService cs = Umbraco.Core.Composing.Current.Services.ContentService;
cs.SaveAndPublish(child);
}
答案 2 :(得分:0)
看that link,似乎Umbraco的“保存”有效,即使某些内容为空但不是完全无效:
保存正在起作用,但并不完全,它正在将内容保存到数据库 但不包括Umbraco后台。即使我尝试包装
中的setValues
if (blogNode.HasProperty("title")) {
我仍然得到一个空引用 错误。
在OP情况下,他在第一步中采用了错误的contentService,所以我认为@Mikkel的答案并不完全错误:
结果证明我在这一行中使用了错误的parentId:
var newBlog = contentService.CreateContent(post.Title, 1053, "umbNewsItem", 0);
正确的陈述是:
var newBlog = contentService.CreateContent(post.Title, 1061, "umbNewsItem", 0);
L-