問題タブ [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.
redirect - RenderAction呼び出し間のViewDataの維持
サイトのすべてのページで、Html.RenderActionを使用して一般的なログインフォームをレンダリングしています。
ユーザーがテキストボックスに詳細を入力して[送信]をクリックすると、ログインを処理するコントローラーにPOSTが実行されます。
無効な電子メールアドレスを入力するなどの間違いを犯した場合、ModelStateにエラーメッセージが表示され、以前のページにリダイレクトされます。
問題は、RenderActionが個別のリクエストとして発生するため、ViewModelが失われることです。
TempDataに入れても、TempDataは個別のリクエストごとにフラッシュされるため、失われます。
連続するHtml.RenderAction呼び出し間でデータを保持する方法はありますか?
そうでない場合、これをハックする方法についての提案はありますか?(データをセッションに入れる必要がありますか?)
asp.net-mvc - ASP.Net MVC で TempData と Session をいつ使用するか
私はMVCフレームワークのコツをつかもうとしているので、我慢してください。
現在、セッションストアを使用しているのは、現在ログインしているユーザーを保存することだけです。私のウェブサイトはシンプルです。この例では、Person、Meeting、および File の 3 つのドメイン オブジェクトを考えます。ユーザーは、ログインしてミーティングの「メンバー専用」プロファイルを表示し、それにファイルを追加したり、ログインしていない場合はミーティングの公開「プロファイル」を表示したりできます。
そのため、ミーティングのプライベート プロファイルから、ログインしているユーザーには、「ファイルを追加」リンクがあります。このリンクは FileContoller.Add(int meetingId) にルーティングされます。このアクションから、ユーザーが会議 ID を使用してファイルを追加したい会議を取得しますが、フォームが投稿された後でも、ユーザーがファイルを追加している会議を知る必要があります。それが私の質問の場所です。TempData を介して「現在やり取りしている」ミーティングを渡す必要がありますか、それともセッション ストアに追加する必要がありますか?
これは私が現在追加アクションをセットアップしている方法ですが、機能していません:
編集:
ほとんどの回答に基づいて、どのような種類のデータ (メッセージ以外) を TempData と Session に保存する必要があるかについて、誰かが例を提供できますか?
asp.net-mvc - ASP.NET MVC 例外処理
コントローラーのアクションで例外をキャッチしても問題ありませんか? それを行うより良い方法はありますか?私は実際にコントローラーで例外をキャッチし、TempData を使用してユーザーにメッセージを表示していますが、このアプローチには奇妙な感覚があります。ブラウジングしてきましたが、自分に合うものは見つかりませんでした。
asp.net-mvc - アクション/コントローラーにTempDataを永続化するように指示する
TempDataは、単一ページのリクエスト間でのみ機能するように設計されていることを理解しています。しかし、意図した機能が壊れていると思う状況があると思います。
画像の配信には、ハンドラーよりもコントローラーを使用します。それがベストプラクティスであるかどうかは今はわかりませんが、私にとっては非常にうまく機能します。ただし、問題は、画像アクションの1つを呼び出すたびに、明らかにTempDataクレジットが消費されることです。
MVCに「このコントローラー/アクションは通常のページリクエストの範囲外です」と言う方法はありますか?したがって、TempDataを永続化するか、TempDataライフサイクルから完全に削除しますか?
リッチ
asp.net - App_Data にファイルを書き込むと、tempdata が null になる
ファイルを保存し、App_Data ディレクトリにディレクトリを作成できる小さな asp.net MVC 1 Web アプリがあります。書き込み操作が成功したら、tempdata にメッセージを追加し、redirectToRoute を実行します。問題は、アクションの実行時に tempdata が null であることです。Web アプリケーションのルート ディレクトリ以外のディレクトリにファイルを書き込むと、tempdata は null ではなく、すべてが正しく機能します。app_data に書き込むと tempdata がクリアされるように見える理由はありますか?
編集: DRS.Logic.Repository.Manager.CreateFile(path, hpf, comment) が App_Data に書き込む場合、TempData はリダイレクト先のアクションで null になります。Web アプリのルート外のディレクトリであれば問題ありません。例外はスローされていません。
asp.net - ASP.NET用のASP.NET MVCのViewDataと同等ですか?
ASP.NET MVC for ASP.NET の ViewData/TempData オブジェクトに相当するものはありますか?
私がしたいのは、セッション アイテムを 1 つのリクエストに対してのみ有効にすることです。
前もって感謝します!
編集:
問題は、更新と作成のビューが 1 つしかないことです。ビューが更新モードの場合、セッション項目が満たされているか、すでに満たされている必要があり (!)、作成モードではセッション項目は null です。そのため、作成モードでページを送り返してモードを編集モードに変更すると、セッション項目が入力されたため、ビューのボタンが有効になります。モードはセッション項目によって異なります。また、セッション項目は、別のビューによって、または連絡先を正常に作成したときに入力できます。セッション アイテムの値は contactId です。
asp.net-mvc - コントローラーからビューにデータを渡し、コントローラーに戻し、ビューに戻す
ASP.NET MVC は初めてです。従来の ASP.NET モデルを長い間使用してきたため、このモデルを理解するには時間がかかります。
物事がどのように機能するかを理解するために、NerdDinner を使用しています。
したがって、いくつかのビューを通過する必要があるオブジェクトがあります。記事NerdDinner Step 6: ViewData and ViewModelに似ています。
Get to Post からのデータを初めて保持し、それを TempData に入れて別のアクション (AnotherAction) に渡します。Get でデータを取得したら、Post で保持できません。
これが私のコードです:
asp.net-mvc - Global ASAX からの TempData
Global.asax.cs 内から TempData ディクショナリ オブジェクトにアクセスする方法について、誰かがサンプル コードを投稿できますか?
asp.net-mvc - asp.net mvc: TempData と AuthorizeAttribute
この質問へのフォローアップとして、TempData に何が起こっているのか疑問に思っています。
シナリオ 1:
- ユーザーのログイン
- ユーザーがメールアドレスを提供
- ユーザーは検証コードが記載された電子メールを受け取ります
- ユーザーが検証 URL をクリックする
- ユーザーが検証されます
- Validate アクションで設定された TempData を介して成功メッセージが表示されます。
シナリオ 2:
- ユーザーのログイン
- ユーザーがメールアドレスを提供
- ユーザーのログアウト/タイムアウト
- ユーザーは検証コードが記載された電子メールを受け取ります
- ユーザーが検証 URL をクリックする
- ユーザーが検証されます
- Validate アクションで設定された TempData を介して成功メッセージが表示されない
現在、ユーザーがログインして検証する理由がわかりません。シナリオ 1 では、"Success" メッセージを TempData に入れ、RedirectToAction("Index") を返します。インデックス アクションには AuthorizeAttribute があります。ログインしていない場合は、ログイン画面 (別のコントローラー) にリダイレクトされます。
ログイン画面にメッセージを表示したいのですが、このシナリオでは TempData がクリアされているように見えます。TempData ライフサイクルを誤解していますか? 同じコントローラ内のリクエストにのみ適用されますか?
asp.net-mvc - ASP.NET MVC TempData が間違った要求に使用されました
リダイレクト中に ModelState を保持するために TempData を使用します (MvcContrib 手法を使用)。これはうまくいきます。ただし、まれに、ユーザーがリクエストを中止し、すぐに別のメニュー項目を起動することがあります (たとえば、別のメニュー項目をすばやくクリックするなど)。これにより、所属していないそのページに ModelState エラーが表示されます。
問題は、TempData が Session に格納されていることです。これは、サーバーに最初に来るリクエストなど、どのリクエストでもそれを取得できることを意味します。
既知の回避策はありますか? たとえば、保存された ModelState とともに TempData に「宛先ページ」を保持します。