在我的 Orchard 实例中,我有一个自定义内容类型,其中包含自定义内容部分。在内容部分的“编辑器驱动程序”中,我需要检查容器内容项是否有效(即通过验证)。
由于 Orchard 的工作方式,正常的 ModelState 在这里不起作用——我可以确定内容部分是否有效,但我需要了解整个内容项(内容项中还有其他内容部分)。
我知道一旦使用生命周期事件( http://docs.orchardproject.net/Documentation/Understanding-content-handlers )发布/创建内容部分,就有执行代码的方法,但没有办法(据我所知)传递那些事件信息。
基本上,如果内容项有效,我需要执行一个方法,并且我需要传递 ViewModel 中包含的方法信息。
可能有(并且可能是)更好的方法来做到这一点,但我正在努力在 Orchards 框架内找到一种方法。
示例代码:
//POST
protected override DriverResult Editor(EventPart part, IUpdateModel updater, dynamic shapeHelper)
{
var viewModal = new EventEditViewModel();
if (updater.TryUpdateModel(viewModal, Prefix, null, null))
{
part.Setting = viewModal.Setting;
}
//here's where I need to check if the CONTENT ITEM is valid or not, for example
if (*valid*)
{
DoSomething(viewModal.OtherSetting);
}
return Editor(part, shapeHelper);
}
注意:我使用的是 Orchard 1.6 版。