これらの要件を満たすASP.NETMVCビューで動的フォームをレンダリングする作業を行っています。
- フィールドを検証できます
- フォームが無効な場合、状態は保持されます
これを実現するために、カスタムモデルバインダーの作成を検討しています。私は一般的にこれを行うことを計画しています:
- フォームフィールドはこれらのプロパティで定義されます
- プロンプト(フィールドの横のラベル)
- タイプ(テキスト、チェックボックスリスト、ラジオリストなど)
- 選択肢(リストフィールド用)
- 必要とされている
- RegularExpression(テキストフィールド用)
- 表示オプション
- フィールド定義のコレクションがコントローラーからビューに送信されます
- フィールドはHTMLにレンダリングされ、ブラウザに送信されます
- フォームがサーバーに返送されます
- カスタムモデルバインダーは、フォームをフィールド定義のコレクションにバインドします。このコレクションには、送信された値が含まれています。
- 各フィールドが検証されます
- 必要に応じて->値が必要
- RegEx->が一致する必要がある場合
- 無効なフィールドごとに、エラーメッセージがmodelstateに追加されます
- コントローラーが何をするかを決定します
- すべてのフィールドが有効な場合
- フィールドとその値を使って何でもします
- 1つ以上のフィールドが無効な場合
- フィールドのコレクションをビューに送り返します
- 以前に試行した値を使用して、フィールドを再度レンダリングします
- 検証の概要を表示する
これを最善の方法で行っているのか、最も簡単な方法で行っているのかわかりません。このアプローチは私に多くの問題を与えますか、それともうまくいきますか?それを改善するために何ができますか?