1

実行シートやその他のフォームデータを収集するプログラムを作成する必要があります。無効なデータを保存するには?

フォームフィールドのデータが無効であっても、明示的に破棄されない限り、すべてのフォームは入力時に保存する必要があります。
ユーザーは常に「後で保存する」ことができます。または、ウィンドウを閉じるだけでデータを保存する必要があります。

問題は、無効なものを含めて、すべてのランタイムシートを索引付けして検索可能にする必要があることです。

私はいくつかのオプションを探しています:

  • 検証を実装して、同じタイプのサブクラスを持っている(だろうその仕事を?)
  • をXMLとして不正なレコードをシリアル化し、どこか別の場所までそれを保存します検証され、恒久的に保存されます。
  • 検証属性を使用するのではなく、カスタム検証(つまりIValidatableObjectインタフェースを使用)を使用すると、レコードの別のプロパティが検証をスキップする必要があることを示す場合に検証をバイパスしますが、データベースに大量のデータ同じテーブルで、私が支配している限り、これは問題ではないかもしれません。私は本当にこのオプションを最も考慮しています。私の本当の疑いがある

  • 私は別の場所にデータを保存する場合、私は外部のランタイム方法で検証を行った場合、検索は悪夢
  • になり、検証属性の使用を避け、データベースの列には実際のプロパティの要件(つまり必須フィールド)は反映されません。私は確か列はそれほど厳密ではありませんが、私はまだ彼らのMaxLengthや他のいくつかの重要なを設定することができますので、私はまた、2つのテーブルを検索することがより私を気にするので、このオプションのために行く、と思う

データベース構造にとって不可欠であるが、実際に検証プロセスを妨げることのないプロパティ。
実際には、datetimeを文字列として格納するか、それを低くする必要があります。

私は、文字列の形式として、ユーザーのブラウザにクッキーとしてそれらをすべて保存について(文字列は何の検証を必要としない方法を

+0

私は第2のオプション – Sherlock

+0

に行くでしょうが、それは検索結果に含まれなければなりません。首の痛み。 – Shimmy

+0

いくつかの「ファイナライズ」ステージを実装できますか?たとえば、ブール値「Final」を設定し、それが真であれば厳しい検証をしますか? –

答えて

1

私はちょうどモデルで非常に邪魔にならない検証のために行くつもりだと思う(つまり、MaxLengthなど)、モデルを検証せずに保存するかどうかを決定するプロパティ、IValidatableObjectを実装します。必要なすべての検証属性をカスタムカスタム検証として実装します。

0

...似たような状況に直面し、いくつかの円滑な魔法のメソッドを持っている可能性がある人から聞いてみたかったですあなたがそれにバインドしない限り、clientSideで)。そして、あなたはデータベースのコミットのためにサーバー検証を使用してください。クッキーにデータを保存の詳細についてはこちら

チェック:

Storing multiple values in cookies

私はがあなたのモデルにどのクライアントの検証に使用しないで言ったように。

の場合は、ViewModelsを使用し、CookieにViewModelを保存するだけです。そして、あなたのコントローラ上で、ユーザーが最終的にデータベースに保存したいときにそれらを検証するだけです。

+1

OPは、無効なデータはまだ索引付け可能で検索可能である必要があると述べているため、おそらくデータはサーバー側に保存する必要があります。 –

+1

データベースに文字列としての検証なしでデータを保存することができます。 ViewModelまたはコントローラを使用して必要な検証を行い、データストアの手順を完了します。 – MRebati

+0

それをやり遂げる方法はまさに質問ですね。 –

関連する問題