【发布时间】:2015-07-17 02:04:47
【问题描述】:
在 Global.asax.cs 中,我有 5 辆汽车的列表(模型,Cars.cs,从数据库中提取数据):
public class MvcApplication : System.Web.HttpApplication
{
public static List<Car> Cars = Enumerable.Range(1,5)
.Select(i => new Car(i))
.ToList();
protected void Application_Start()...
}
然后我使用首页上的列表:
@foreach(var C in MySite.MvcApplication.Cars)
{
<a href="/Car_@C.Number">@C.Name</a>
}
我不知道如何强制 Cars 变量刷新。我发现最快的方法是登录服务器,打开 IIS,然后停止和启动网站 - 简单地重新启动它是行不通的。显然这是不可持续的,我确信有更好的方法......
这是我尝试过的其他一些事情:
- 创建了一个脚本来停止网站,等待 5 秒,然后重新启动。这执行了停止和启动,但数据没有改变。
- 创建 SQL 依赖项。这不起作用,因为我使用 dsn 连接到数据库(没有办法解决这个问题)。
我需要一种方法来自动执行此操作,这样用户就可以更新信息和刷新数据,而无需我在每次发生变化时都登录到服务器。
【问题讨论】:
-
你为什么在 global.asax 启动期间收到你的
Cars?调用 View 时不应该得到它吗? -
@ChaseFlorell 我不想每次有人访问首页时都查询数据库。数据变化不够频繁,不足以使其可行。我希望能够告诉它何时重新加载数据。
-
不过,解决方案不是在全局启动期间执行此操作。您可能最好设置某种缓存机制。老实说,即使您每分钟调用一次(60 秒缓存),调用也不会那么昂贵。
-
^ 这个,或者分解你的声明和赋值,并在 app_start 分配一次,并编写允许你根据需要调用相同的赋值逻辑的功能。
-
我会,但我在飞机上,电池电量低-_-。简而言之,只需将分配从 Cars 移动到全局方法,然后在应用程序启动时调用一次,然后从“刷新”页面调用。 @ChaseFlorell 如果我没记错的话,请查看不是 VM,考虑到它具有静态数据集,这似乎是一个一次性应用程序。对于这么小的功能来说,“好的设计”可能太重了。从某种意义上说,这个在全局中连接起来的全局数据集依赖完成了一个原始的“穷人的 DI”组合根。
标签: c# asp.net-mvc asp.net-mvc-4