問題タブ [tempdata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-3 - ASP MVC TempData を使用してユーザーにメッセージを表示する際の問題
TempData を使用してユーザーにメッセージを表示しています。文字列を TempData に入れ、後でその文字列を読み取り、それが空でない場合は、メッセージを含む DIV を表示します。
すべて正常に動作し、ユーザーがページを更新してもメッセージは表示されません (これが私の望みです)。問題は、ユーザーが他のページに移動してブラウザの戻るボタンを押すと、メッセージが再び表示されることです。これは望ましくありません。
この動作を回避するにはどうすればよいですか?
ありがとう。
これは、TempData (Razor + VB) を読み取るために使用するコードです。DIV #commonMessage があります。このコードでは、文字列を div 内に配置して表示します。前に言ったように、それは機能していますが、唯一の問題は、ユーザーがブラウザーでクリックして戻ると、TempData がまだそこにあることです。
編集: TempData がキャッチされているようです。なぜなら、メッセージを表示しているアクションのキャッシュを無効にすると (属性を使用してSystem.Web.Mvc.OutputCache(NoStore:=True, Duration:=0, VaryByParam:="*")
)、問題が消えるからです。しかし、キャッシュを無効にする必要のない方法を見つけることができればよいのですが...
要求された編集: 私は ASP では非常に初心者なので、何をしようとしているのかを明確にしようとしています。ユーザーがアクション (たとえば、クライアントの編集) を実行すると、クライアントをクライアント リスト ページにリダイレクトし、ユーザーに「クライアント データが更新されました」というメッセージを表示します。メッセージが一度だけ表示されるようにしようとしています。おそらく、TempData は正しい方法ではありません (私はまだ学習しているのでわかりません) が、ターゲットはユーザーにメッセージを 1 回だけ表示することです (urser が更新された場合でも、ユーザーがアクセスした場合でも)。他のページを開き、ブラウザで押し戻します)... TempData を使用するか、目的により適したものを使用します。
c# - ASP.NET MVC:TempDataを再割り当てします
コントローラアクションで、TempData変数のリダイレクトから変数を受け取ります
別の呼び出しのためにそのデータムを保持する必要があるため、ビューを返す前にデータムを再割り当てしようとします。
レンダリングされたページからChangePasswordにPOSTリクエストをすぐに送信しますが、今回はTempData["myVariable"]がnullです。たぶん私は愚かなことをしているのですが、どうやって望みの結果を得るのですか?私はSession変数を使用したくありません(それはずっと長く持続し、Session変数の汚染を防ぐために変数がクリアされていることを手動で確認することに取り組んでいます)。フォーム(非表示の変数)を介して再投稿することもできますが、変数はサーバー側のみに保持したいと思います。
c# - phpで同等のc#TempData
セッションを手動で明示的に設定および設定解除できることは知っていますが、これは質問する価値があると思います。C#には、最初のリクエストまでデータを保存するTempDataという辞書があります。つまり、TempDataが呼び出されると、自動的に設定が解除されます。理解を深めるために、ここに例を示します。
Controller1.cs:
Model1.cs:
つまり、基本的には、これは1回だけのセッションのようなものです。繰り返しになりますが、phpで明示的に設定および設定解除できることは知っていますが、それでもphpにはこのような機能がありますか?
c# - TempData が消去されない
ユーザーがログインしていないシナリオで、TempDataを使用してモデルオブジェクトを保存するASP.NET MVC 3 Webアプリケーションに取り組んでいます。
フローは次のとおりです。
- 送信フォームを使用します。
- コード (特別なアクション フィルター) はモデルを TempData に追加し、ログオン ページにリダイレクトします。
- ユーザーは、TempData を読み取り、POST アクションを直接呼び出す GET アクションにリダイレクトされました
ステップ 3 の後、TempData がクリアされると思いましたか?
コードは次のとおりです。
次のような記事を見つけました。
- アイテムは、削除のタグが付けられている場合にのみ、リクエストの最後に TempData から削除されます。
- アイテムは、読み取られたときにのみ削除用にタグ付けされます。
- 項目は、TempData.Keep(key) を呼び出すことでタグ付けを解除できます。
- RedirectResult と RedirectToRouteResult は常に TempData.Keep() を呼び出します。
それを読んでそれTempData["xxx"]
は「読んだ」のではないので、削除のためにタグ付けする必要がありますか?
そして最後の1つは私に少し関係があります-私はPOST(PRG)の後にリダイレクトを行っているからです。しかし、これは避けられません。
「このアイテムを捨てる」と言える方法はありますか?TempData.Remove ? それとも私はこれを間違っていますか?
asp.net-mvc - TempData の使用に関する懸念事項
ChildAction からレンダリングされたフォームの ModelState エラーを永続化するために TempData を使用しています。このフォームを使用すると、ユーザーはブログ投稿にコメントを投稿できます。ModelState が有効でない場合、エラーは TempData にコピーされ、ChildAction をShowPost
介して検証エラーを含むコメント フォームを表示するアクションにリダイレクトします。
私の懸念は、ModelState エラーを TempData に保存してから ChildAction に再表示するまでの間に、実際に 2 回リダイレクトしていることです。これは、私のShowPost
アクションでは、現在の投稿に一致する有効なスラッグがあるかどうかも確認し、そのスラッグが見つからない/正しくない場合はリダイレクトしてそのスラッグを含めるためです。つまり、ユーザーがコメントを投稿すると、次の場所に投稿されます。
次の場所にリダイレクトされます。
次にリダイレクトします。
コメントエラーが表示される前。私のテスト サーバーでは問題なく動作していますが、この 2 番目のリダイレクトで特定の問題が発生する可能性はありますか? 私が読んだ投稿/質問は、リダイレクトの直後に TempData を使用する必要があることを示唆しているため、私は尋ねています。そうでない場合、リクエスト間でデータが失われる可能性があり、2 回目のリダイレクトが原因ではないかと考えています。
asp.net-mvc-3 - TempData[] が IE で動作しない理由
私の MVC3 プロジェクトには、アクション間でデータを渡すために使用している TempData[] がたくさんあります。そして、Chrome を使用すると完全に機能します。しかし、IE では TempData[] 項目の値を取得できません。誰かが問題を知っていて、どうすれば解決できますか?
`
asp.net-mvc-2 - TempData と ViewData はすぐに死んでしまいます
変数を長期間保存する方法はありますか? ユーザーが長時間 (最大 2 時間) 窓を開けたままにします。その場合、値が null になる可能性があります。正しい場合ViewData
、ビューが読み込まれるとすぐに null になります。私はそれをどうしますか?
asp.net-mvc-3 - TempData は機能しますが、1 つのリクエストで遅延します
私はTempDataを使用して、Redirect after Postでメッセージを運びます。コントローラーは、次のように tempdata を設定します。
_Layout.cshtml には、次のフラグメントがあります。
私の問題は、リダイレクト後にメッセージが表示されないことです。ただし、リダイレクト (更新または他のページ) の直後に続く要求では、メッセージが表示されます。表示された後、期待どおりにセッションから削除されます。
リダイレクト先のページに TempData を表示するにはどうすればよいですか?
asp.net-mvc - TempData:安全ですか?
を使用するTempData
ときにモデルを保持するためにを使用していRedirectToAction
ます。それはうまくいきますが、私はそれが正しいことではないかもしれないというしつこい感じがします。私は本当にSessionデータの使用を避けようとします、そして私はTempData
Sessionを使用することを読みました。安全に使用できますか?負荷分散された環境で使用する際に発生する可能性のある問題はありますか?
雑学クイズ:「安全ですか?」-映画に名前を付けます。
asp.net-mvc - asp.net mvc - ページ更新の検出
この問題に関する StackOverflow の同様の質問であることは理解していますが、どれも私の問題を解決していないため、新しい問題を作成しています。
タイトルが示すように、ユーザーがページを更新したことを検出したいと思います。ユーザーが行ったこと (項目の追加、削除、編集など) に関するログ情報を保存するページがあります。このログは、ユーザーがページを更新したときではなく、ページを離れたときにのみ保存できます。
以下の例を試して、更新または新しいリクエストかどうかを検出しました。
それTempData
は私の次の行動で期限切れになるはずです。ただし、何らかの理由でアプリケーション全体で存続しています。このブログによると、その後のリクエストで有効期限が切れるはずです(私が何かを理解していない限り)。アプリからログアウトして再度ログインしても、TempData はまだ有効です。
javascript関数onbeforeunload
を使用して何らかのアクションへのAJAX呼び出しを行うことを考えていましたが、もう一度TempDataに依存するか、この更新情報を何らかの形で保持する必要があります. 任意のヒント?