我正在实现它,因此我可以加载json文件作为选项文件,并在需要时持久保存更改后的数据。我遵循了this的问题,使文件保存工作正常,我成功获取了更改时重新加载的触发器。但是,当我POST
操作并更新信息并最后执行RedirectToAction("Index")
时,似乎并没有更新瞬态。返回重定向后,页面与POST
之前的状态相同,但是当我手动按F5刷新页面时,现在将显示正确的数据。
我尝试过类似RedirectToAction("Index", "Admin")
之类的事情,并试图让瞬态更新每个动作或编写自己的动作,但找不到任何能帮助我开始这样做的东西。
在查看上面的链接时,了解IWritableOptions
是有帮助的。我唯一更改的是,它没有给它一个部分,而是加载了整个文件。
private readonly IWritableOptions<Settings> settings;
public AdminController(IWritableOptions<Settings> settings)
{
this.settings = settings;
}
public IActionResult Index()
{
// Loading for the first time all is good and settings values are valid
// After being RedirectToAction from the HttpPost the data hasn't updated to the new values.
// If I manually refresh the page all data is correctly set to the new values. (Same if I leave the page and come back)
return View(settings.Value);
}
[HttpPost]
public IActionResult General(SettingsViewModel model)
{
settings.Update(opts =>
{
opts.Value1 = model.Value1 ;
opts.Value2 = model.Value1 ;
});
return RedirectToAction(nameof(Index));
}
预期的结果是在RedirectToAction之后,现在将设置值设置为其新值。我认为这与使用AddTransient
有关,在onReceive
中,它仅在控制器完全重载时刷新,而从我的阅读中得出的结果并不是100%正。我有任何可能使它正常工作...