ユーザーに記入してもらう必要がある非常に大きなフォームがあります。有効かどうかにかかわらず、進行状況を保存できる必要があります。後で戻ってきたときに、更新して有効にし、データを送信できます。
ドメイン モデルでクライアント側スクリプト (xval)、サーバー側属性を使用しています。
ユーザーに記入してもらう必要がある非常に大きなフォームがあります。有効かどうかにかかわらず、進行状況を保存できる必要があります。後で戻ってきたときに、更新して有効にし、データを送信できます。
ドメイン モデルでクライアント側スクリプト (xval)、サーバー側属性を使用しています。
xvalについてはよくわかりませんが、xval属性から継承してそこでチェックを行うことを検討できるかもしれません...
たとえば、ConditionalRequiredAttribute : RequiredAttribute は、検証に適切なステータスを取得できる可能性があります。
検証条件が満たされている場合 (ステータス != "ドラフト)、検証は ConditionalRequiredAttribute の validate メソッドで base.Validate() (またはそれが呼び出されたもの) と同じくらい簡単です。
xval がわからないので、クライアント側の検証がどのように機能するのかわかりません... クライアント側の検証コードを作成しますか? この場合、javascript で同様のラッパーを作成するコードを作成する必要があります (例: if(status != "Draft")... 検証が単純にエラーのリストを返すサーバーへの Ajax 呼び出しを行う場合、他に何もする必要はないと思います。
申し訳ありませんが、あなたの質問に直接答えることができませんでしたが、これはあなたがいくつかのアイデアを思い付くのに役立つかもしれません...
1 つのオプションは、Save() の代わりに別の Action SaveDraft() に移動する [Save Draft] ボタンを用意することです。別の方法を用意することで、保存操作で必要な検証の量を決定できます。よりクリーンだと思います。
一定量の検証ロジックを適用するかどうかを同じ保存アクションに決定させると、読み取りと保守が難しくなります。