やあ、
いくつかの入力フィールドを含むビューがあります。これらのフィールドのいくつかは通常のファイル入力です。このビューフォームを送信すると、ファイルは一時フォルダに保存されます。ただし、サービス側で検出された検証の問題がある場合は、同じビューが返されます(更新用)。問題は、ファイル入力が再度入力されないこと(セキュリティ)であり、代わりに、ビュークラスを拡張して、保存されたファイルの小さなサムネイルを表示し、削除できるようにする必要があります(代わりに別のファイルをアップロードできるようにするため)。
ユーザーがもう一度送信を押すと、ビュークラスには保存されたファイルに関するデータが含まれなくなります。このためのベストプラクティスはどのようになっていますか?
私自身の考えは次のいずれかです:
- 非表示のフィールドを使用しますが、保存するクラスが複雑な場合、これは複雑になり、安全性も低下します。
- セッションを使用してデータを保存します。これが良い解決策か悪い解決策かわかりませんか?
- このすべてのデータが一時的に保存される単一のクラス(キャッシュなど)を作成します。ASP.NETには、キャッシュが解放されるまでの時間を設定できるキャッシュがありました。これは同じように機能します。
- 広告を一時的なものとしてデータベースに保存します。これは、ビューが返されるときに、一時的な広告の編集ではなく、実際には作成された広告の編集であることを意味します(データベースにはありません)。問題は、ユーザーが最初のサービス検証後に中止した場合、データベースに完全ではない広告が表示されることである可能性があります。もう1つのマイナス点は、広告が使用されていない場合でも、IDカウント(ID)が増加することです。そして、このソリューションの最後の問題は、広告テーブルに不完全な広告が含まれることです。
お願いのアドバイス
私の解決策: リクエスト間でデータを保持するためにSystem.Web.Cacheを使用することになりました。広告が作成されて承認されると、キャッシュから削除され、データベースに追加されます。