我在TempData
刷新视图时遇到问题。
这controller
将 a 分配string
给TempData
:
public ActionResult Sucursales(string rfcCompany)
{
model.CuentaUser = CuentaUser;
TempData["RFCCompany"] = rfcCompany;//solo para evitar mandar el rfc por la url nuevamente
return View(model);
}
Sucursales.cshtml
在我重定向到的视图中DetalleSucursal.cshtml
,控制器有这个:
public ActionResult DetalleSucursal(int id, int idEmpresa, string CuentaUser){
ComprobantesModel model = new ComprobantesModel();
model.idEmpresa = idEmpresa;
model.idSucursal = id;
model.CuentaUser = CuentaUser;
ViewBag.RFCCompany = TempData["RFCCompany"] as string;//para mostrar el RFC en algun lugar de la vista
return View(model);
}
DetalleSucursal.cshtml
我对视图的第一次加载没有问题,当我刷新它TempData["RFCCompany"]
在控制器中加载的视图时,问题就出现了,就null
好像它没有从控制器中加载一样Sucursales
。如何避免TempData["RFCCompany"]
不返回null
页面刷新DetalleSucursal.cshtml
?
TempData
它的生存时间很短(直到它完成加载视图)。作为替代方案,您
TempData
可以使用Session
它将保留数据一段时间session
或直到您手动删除它。如果不想使用会话变量,可以
TempData
结合使用 方法Keep
来携带重定向之间的信息。官方文档说:要保留所有字典条目,请
TempData
使用:要保存字典条目
TempData
,您必须指定一个键:在您的情况下,我进行的一项测试对我有用的是,
Controller
该值的指定方式与您定义它的方式相同:您只需在视图端添加以下代码段,位置无关紧要,但对于代码的组织,我建议将其放在开头:
这样,对于未来的重定向,信息将在请求之间传输。
参考:
localStorage
另一种方法是使用或sessionStorage
( )保存客户端信息Web Storage
。要确定浏览器是否支持
Web Storage
它,我们使用以下代码片段:sessionStorage
现在可以在浏览会话期间访问它。如果出现以下情况,数据将无法恢复:从 w3school 获得的示例:Demo w3school sessionStorage
这是最适合我的问题的,因为我不需要像 localStorage 那样长时间保存数据。
但是,如果我们想在会话之外存储该信息并使其在浏览器关闭和重新打开时都可用,或者如果我们继续在与初始窗口不同的窗口中浏览,该怎么办?
这试图由 回答
localStorage
。此对象具有与 相同的属性和方法sessionStorage
,但它的持久性超出了会话。如果出现以下情况,数据将无法恢复:
从 w3school 获得的示例:Demo w3school localStorage