在多视图MVC 5中重用模型中的数据

时间:2015-10-09 10:14:08

标签: c# asp.net-mvc model

我有一个C#网络应用程序的用户模型,我在控制器中填充了各种属性,如用户名等。

我只想知道是否有一个地方我可以实例化这个类一次,然后在多个控制器中重复使用它,因为我现在已经设置好了,所以每个控制器创建一个新的User实例添加相关数据它并将它传递给它的视图,但这看起来效率不高!

1 个答案:

答案 0 :(得分:1)

您可以使用MemoryCache缓存数据:

public class InMemoryCache: ICacheService
{
    public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
    {
        T item = MemoryCache.Default.Get(cacheKey) as T;
        if (item == null)
        {
            item = getItemCallback();
            MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
        }
        return item;
    }
}

interface ICacheService
{
    T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}

用法:var user=cacheService.GetOrSet("User", ()=>Repository.GetUser())

或实现CacheRepository模式(CacheRepo pattern description