我有一个Web API服务,我已设法使用此处列出的方法将值提取到ContentPart
:How to change Orchard record repository。
现在,我想要做的是更新ContentPart
上的属性值,并通过Web API调用执行更新。我认为我很接近,但是无法获得更新方法。
在我的Handler
中,我为OnUpdate
添加了一个处理程序。我可以看到我的OnUpdate
方法已注册,但它永远不会执行。
所以我的问题是:这是正确的处理程序事件吗?如果是这样,我怎么能让它触发?
我应该补充一点,我通过ContentPart
访问Controller
,而不是Driver
。
答案 0 :(得分:1)
OnUpdating
时, OnUpdated
/ IContentManager.UpdateEditor(item)
都会被解雇。在默认情况下,当您在编辑内容项时按“保存”按钮时会发生这种情况。
“通过ContentPart
”访问Controller
,我的意思并不明白?
您是否有自定义控制器来处理项目编辑器呈现并且它是回发? 或者您是否在代码中创建和更新某些项目,而根本不使用内置编辑器?
IContentEditor.UpdateEditor(item)
会调用整个内容
POST操作中的项目(与默认情况下相同)
控制器 - Core\Contents\Controllers\AdminController.cs
)。OnUpdating
/
OnUpdated
不会被解雇,您需要调用Web服务
正如Bertrand在评论中指出的那样,你自己来自控制器的行动。还有第三种选择,我发现它在类似情况下特别有用:
LazyField<T>
作为更新后推送到Web服务所需的部件属性的支持字段。OnActivated
事件期间进行设置)。 有关如何使用惰性字段的示例,请查看CommonPartHandler
类和方法LazyLoadHandlers
和PropertySetHandlers
。