1

ASP.NET MVC 4 を使用していますが、クロスサイト ナビゲーション バーにデータをプリロードしたいので、MasterController にデータを保存する状況があります。

abstract class MasterController : Controller
{
    FakeObject MyData { get; set; }

    if (this.MyData == null)
    {
        this.MyData = // do something crazy and load lots of data
    }
}

すべてのコントローラーは MasterController から継承します

class HomeController : MasterController
{
    ActionResults Index()
    {
        return View();
    }
}

問題は、ポストバックがあるたびに MyData が上書きされることです。このデータを保存し、SessionState を使用せずに PostBacks 間で取得する方法を見つけようとしています。これはできますか?私の MasterController の使い方が間違っているのかもしれません。

私は次のことを試しましたが、うまくいきません:(

TempData.Add("mydata", MyData);
TempData.Keep("mydata");
4

2 に答える 2

1

これが基本的に静的データである場合は、組み込みキャッシュを使用できます。

abstract class MasterController : Controller
{
    public MasterController() { if (Cache["Foo"] == null) Cache["Foo"] = Something; }
}

class HomeController : MasterController
{
    ActionResults Index()
    {
        return View(Cache["Foo"]);
    }
}
于 2012-06-07T04:51:28.007 に答える