1. ホーム
  2. asp.net-mvc

ASP.NET MVCでTempdataを使用する - ベストプラクティス

2023-08-31 06:26:27

質問

ASP.NET MVC 3を使用して、Webアプリケーションを構築しています。

私が行おうとしていることは、2つのコントローラ間で値を渡すことです。 TempData を使うことに特に興味があります。

public ActionResult Action1()
{
    string someMessage;
    Test obj = SomeOperation();
    if(obj.Valid)
    {
        someMessage = obj.UserName;
    }
    else
    {
        someMessage = obj.ModeratorName;
    }

    TempData["message"] = someMessage;

    return RedirectToAction("Index");
}

public ActionResult Index()
{
    ViewBag.Message = TempData["message"]

    return View();
}

の使い方もそうですが TempData の使い方は正しいのでしょうか?つまり、ベスト・プログラミング・プラクティスでは、このように TempData ?

どのようなリアルタイムケースで TempData を使うべきでしょうか?

注意。 私は以下のリンクに目を通しました。

ありがとうございます。

どのように解決するのですか?

TempData は、次のリクエストにのみ必要なデータを捨てることができるバケツです。つまり、TempData に入れたものは、次のリクエストが完了した後に破棄されます。これは、フォームの検証エラーのような一度きりのメッセージに便利です。ここで注意すべき重要なことは、これはセッション内の次のリクエストに適用されるため、そのリクエストは別のブラウザウィンドウやタブで発生する可能性があることです。

特定の質問に答えるために: これを使用する正しい方法はありません。すべては使いやすさと利便性次第です。それが機能し、意味があり、他の人が比較的簡単に理解できるのであれば、それは良いことです。あなたの場合、この方法でパラメータを渡すのはいいのですが、そうする必要があるのが不思議です(コード臭?) 私はむしろこのような値をリソース(リソースであれば)またはデータベース(永続的な値であれば)に保持することをお勧めします。あなたの使い方からすると、ページタイトルに使っているので、リソースのように思えます。

お役に立てれば幸いです。