私の Orchard のインスタンスには、カスタム コンテンツ パーツを持つカスタム コンテンツ タイプがあります。コンテンツ パーツの「エディター ドライバー」では、コンテナー コンテンツ アイテムが有効かどうか (つまり、検証に合格するかどうか) を確認する必要があります。
通常の ModelState は、Orchard のしくみのため、ここでは機能しません。コンテンツ パーツが有効かどうかは判断できますが、コンテンツ アイテム全体について知る必要があります (コンテンツ アイテム内には他のコンテンツ パーツがあります)。
ライフサイクル イベント ( 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 を使用しています。