データが送信される前に、ユーザーが入力した内容を確認して確認する機会をユーザーに与える必要があります。ユーザーが送信フォームをクリックすると、フォームに入力されたすべてのデータを別のページに表示したいと考えています。ユーザーがそのページで検証をクリックすると、データはコントローラーに戻り、最終的にデータが送信されます。
主な問題は、すべてのフォーム データをあるページから別のページに移動する方法だと思います。
データが送信される前に、ユーザーが入力した内容を確認して確認する機会をユーザーに与える必要があります。ユーザーが送信フォームをクリックすると、フォームに入力されたすべてのデータを別のページに表示したいと考えています。ユーザーがそのページで検証をクリックすると、データはコントローラーに戻り、最終的にデータが送信されます。
主な問題は、すべてのフォーム データをあるページから別のページに移動する方法だと思います。
これを行う 1 つの方法は、「VerifySubmission」などの新しいコントローラー アクションを作成することです。フォームを送信すると、YourController.VerifiySubmission() に送信されます。VerifySubmission のビューは、ユーザーがデータを確認できるようにデータを表示し、非表示のフォーム フィールドとしてフィールドを書き出します。この「検証」ページには送信ボタンがあり、ユーザーがクリックすると、非表示のフォーム フィールドが最終的な「FormSubmit」コントローラー アクション (名前は何でも) に POST され、データベースに保存されます。
編集:また、質問のタイトルを更新して、質問の内容を示すようにしてください。
enter data-confirm-final送信ページ間でデータを転送するもう1つのアプローチは、2つのリクエスト間で状態(通常はSessionState)を保存できるTempDataを使用することです。
必要なのは、フォームをコントローラーに投稿することです。たとえば、Index
送信用のページを使用している場合、コントローラー コードは次のようになります。
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Verify(FormCollection form)
{
ViewBag.FormItems = form;
return View();
}
[HttpPost]
public ActionResult Accept(FormCollection form)
{
// Do whatever you need to do to store the data
return View();
}
ここで、ユーザーがモデルにある情報を送信している場合、 の代わりにそのモデルを実際に使用し、 をそのモデルに対して強く型付けされるようにFormCollection
設定する必要があります (次のように処理する方がはるかに簡単です)。View
強く型付けされたモデル)。
確かに、ViewBag
を単に格納するように を設定するのFormCollection
は怠惰な方法ですが、本当にやりたいことがわからない場合はうまくいきます。前述したように、入力データにモデルを使用すると、物事が単純化され、より堅牢になります。