【发布时间】:2018-01-09 00:32:24
【问题描述】:
我有一个基于 ASP.NET MVC 5 框架编写的应用程序。
我创建了一个基本控制器,我的所有控制器都在其中。我的基本控制器是这样的
[Authorize]
public class BaseController : Controller
{
protected IFlashManager Flash { get; set; }
protected ICookie Cookie { get; set; }
protected ICacheClient Cache { get; set; }
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
Cookie = new CookieJar(requestContext.HttpContext);
Flash = new FlashManager(TempData);
Cache = new StackExchangeRedisCacheClient(new NewtonsoftSerializer());
}
}
我想让Cookie 和Cache 对象对我的所有视图全局可用。
微软对 User 对象做了同样的事情。
有没有办法在不使用ViewBag 或TempData 的情况下做到这一点?
【问题讨论】:
-
你可以使用Session,分配一次,对象会一直存在到会话过期
-
这里说的是什么
User对象?如果 cookie 和缓存数据是按用户划分的,使用Session变量就足够了。 -
创建一个包含
Cookie和Cache属性的抽象ViewModel 怎么样?每个其他 ViewModel 都必须继承该抽象 ViewModel 并添加它的附加属性。这样你就可以说你的 @model 就是你创建的抽象 ViewModel。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5