3

私は次のコードを持っています:

コントローラ:

public ActionResult Step1()
{
        return View();
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Step1(FormCollection form)
{
        TempData["messageStatus"] = new Random().Next(1, 1000);
        return RedirectToAction("Step1");
}

意見:

<%=TempData["messageStatus"]%>

たとえば、最初にビューで12345を取得しますが、もちろん 2 回目をリクエストするときは、代わりに12345取得する必要があります。RedirectToActionキャッシュ ページ?

キャッシュの問題を解決するために URL に Guid を入れる必要があるというのはどこでしょうか? この問題についてどう思いますか?

4

3 に答える 3

11

キャッシュの問題が発生していると思います。アクションへのリダイレクトの問題ではありません。RedirectToActionが行うのは、ブラウザにリダイレクト応答を発行して、Step01を要求するように指示することだけです。次に、ブラウザはStep01を要求します。

その場合、ブラウザにStep01がキャッシュされている可能性があります。したがって、STep01にResponseヘッダーを追加して、キャッシュしてはならないことを示す必要があります。あなたはそのようにこれを行うことができます:

[OutputCache(Location = OutputCacheLocation.None)]
public ActionResult Step1()
{
        return View();
}

または、任意の値を渡すことで、アクション呼び出しへのリダイレクトにランダムなクエリ文字列を追加できます。

于 2008-12-17T22:33:57.333 に答える
1

毎回新しいランダムオブジェクトを更新しないでください。同じものを使用してください。.Net Randomは、疑似乱数ジェネレーターにすぎないことを忘れないでください。

于 2008-12-17T21:45:44.590 に答える
0

これを試して:

TempData["messageStatus"] = new Random(DateTime.Now.Millisecond).Next(1, 1000);
于 2008-12-17T21:48:25.303 に答える