4

ユーザーがフォームを送信した後 (HTTP POST)、ユーザーをリダイレクト (HTTP GET) することを誰もが推奨していると聞きました。それはきれいです、「再送信しますか」というアラートはありません、それは簡単です...

しかし、ユーザーに何らかの結果を表示したい場合はどうすればよいでしょうか?

「/?message=1」のようなパラメーターを GET URL に追加して、そのパラメーターを確認できます。orm

しかし、もっと多くの情報を表示したい場合はどうすればよいでしょうか? たとえば、ユーザーがフォームを送信すると、結果は、たとえば、ユーザーに表示したい 5 つの異なるプロパティを持つ単純な構造になります。

「あなたは商品をカートに追加しました。ここには他の 5 つの商品も追加されています。」のようなものです。さて、これは単純化されたものです。「ああ、単に ?productId=xy を渡してから、その ID に基づいて別のクエリを実行してください」とは言わないでください。

POSTBACKモデルに固執する必要がありますか?

ユーザーが匿名であり、Cookie が有効になっていないと仮定します。

4

4 に答える 4

4

それが TempData の目的です。これは、特に、リダイレクトする場合にのみ当てはまります。リダイレクト後も存続することを除いて、ViewData と同じように使用します。

于 2009-03-09T19:58:24.510 に答える
2

ポストが成功すると、コントローラーでユーザーのトランザクション ID を保持し (これには ASP.NET プロファイル プロバイダーを使用できます)、完了したページにリダイレクトします (GET)。

完了したページの GET ハンドラーで、ユーザーの最後のトランザクション ID を検索し、それに基づいて必要なものを表示できます。

「トランザクション識別子」は、トランザクションの詳細を調べるために後で参照できる識別子です。

ここに私が考えているURLシーケンスがあります:

  1. GET /orders/create - フォームを表示
  2. POST /orders/create - 注文を検証して作成し (注文 ID == 10)、/orders/details/{orderId} にリダイレクトします。
  3. GET /orders/details/10 - 注文 10 を検索し、注文とそれに関連する追加情報を表示します
于 2009-03-09T19:44:19.617 に答える
0

TempData ["mykey"]=ObjectIWantToUseOnTheNextページを使用します。

詳細については、このブログ投稿を参照してください。

http://blogs.teamb.com/craigstuntz/2009/01/23/37947/

于 2009-03-12T22:50:55.793 に答える