ここで流れです。:
- 送信フォームを使用してください。
- コード(特殊アクションフィルタ)は、モデルをTempDataに追加し、ログオンページにリダイレクトします。
- ユーザーはTempDataをを読み込み、ステップ3の後、直接
POSTアクションを呼び出すアクションをGETするために戻ってリダイレクトされ、私はTempDataをがクリアされるだろうと思ったでしょうか?
ここでは、コードです:
[HttpGet]
public ActionResult Foo()
{
var prefilled = TempData["xxxx"] as MyModel;
if (prefilled != null)
{
return Foo(prefilled);
}
}
[HttpPost]
[StatefulAuthorize] // handles the tempdata storage and redirect to logon page
public ActionResult Foo(MyModel model)
{
// saves to db.. etc
}
私はthis articleを見つけた状態:彼らは除去のためにタグ付けされている場合
- アイテムだけリクエストの終了時にTempDataをから削除されます。
- アイテムは、読み込み時にのみ削除のタグが付けられます。
- アイテムは、TempData.Keep(key)を呼び出してタグなしにすることができます。
- RedirectResultとRedirectToRouteResultは常にTempData.Keep()を呼び出します。
よく読んでくださいTempData["xxx"]
ではありません "読んで"したがってそれらは削除のタグを付ける必要がありますか?
最後に、私はちょっと心配しています。POST(P-R-G)後にリダイレクトをしているからです。しかし、これは避けることはできません。
私は "このアイテムを捨てる"と言うことができる方法はありますか? TempData.Remove?または私はこれを間違っている?
リダイレクトを完全に実行し、2番目の処理方法を返す必要はありません。そういうわけではないのです。 – Buildstarted
@BuildStarted - POSTメソッド*は終了後にリダイレクトを行います。 POSTメソッドにリダイレクトすることはできません。GETではありませんか? – RPM1984
私が限られたデータに基づいて読んでいるものは、ポストにコード*でリダイレクト*を行い、 'StatefulAuthorize'が呼び出されないということです。 – Buildstarted