【发布时间】:2017-12-27 20:27:37
【问题描述】:
我有一个控制器,它应该显示几个具有预定义值的选择(下拉菜单)。
我显示一个记录列表,每个Record 可以有一个预定义的Theme,并对应预定义值列表中的一个City。
在我的控制器中我有
private IEnumerable<Record> records;
private static IEnumerable<Theme> themes;
private static IEnumerable<City> cities;
private async Task<bool> LoadThemes()
{
themes = await repository.GetTableEntitiesAsync<Theme>(lang);
return true;
}
private async Task<bool> LoadCities()
{
themes = await repository.GetTableEntitiesAsync<City>(lang);
return true;
}
和行动
public async Task<IActionResult> Index()
{
// records = from DB, then
await LoadThemes(); ViewData["themes"] = this.themes;
await LoadCities(); ViewData["cities"] = this.cities;
return View(records);
}
public async Task<IActionResult> Edit(string id)
{
// record => from id, then
await LoadThemes(); ViewData["themes"] = this.themes;
await LoadCities(); ViewData["cities"] = this.cities;
return View(record);
}
由于我不能执行 async 构造函数,也不能确定通过 Index 视图传递,我怎样才能只初始化我的“静态”集合一次?
【问题讨论】:
-
您是否在 LoadCities() 方法中加载城市或主题?即
cities = await... -
我编辑了 OP 来解释这一点
-
控制器中的静态变量不能很好地替代实现真正的缓存。从一个方法返回一个布尔值,返回的唯一值是
true也没有意义。
标签: asp.net asp.net-core asp.net-core-1.1