如果我重定向到一个新页面,通过TempData初始化该页面,它会正常工作,但是如果用户在浏览器中按下刷新按钮,TempData将不再可用。
鉴于这一点,是否有任何情况下TempData可以可靠使用?
或者有没有任何方法可以消除或减轻用户刷新的问题?
如果我重定向到一个新页面,通过TempData初始化该页面,它会正常工作,但是如果用户在浏览器中按下刷新按钮,TempData将不再可用。
鉴于这一点,是否有任何情况下TempData可以可靠使用?
或者有没有任何方法可以消除或减轻用户刷新的问题?
TempData.Keep("nameofthedata");
如果在控制器中保留数据,那么即使在刷新情况下也会保留这些数据。
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
return value;
}
return null;
}
set {
_data[key] = value;
_modifiedKeys.Add(key);
}
}
MVC 2:
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
_initialKeys.Remove(key);
return value;
}
return null;
}
set {
_data[key] = value;
_initialKeys.Add(key);
}
}
Tempdata被用于重定向,所以如果您正在刷新页面,那么这意味着您正在向服务器发出单独的请求,因此数据会丢失。要保留此数据,请在您要重定向的操作中调用Tempdata.Keep("KeyofTempdata")方法。如果您想删除数据,请使用Tempdata.Remove("KeyofTempdata")。
Cache
和Session
。ViewData
本质上会“死亡”。Session
或Cache
。TempData是专门用于存储单个页面加载/操作/重定向的数据。如果您需要在刷新后保留数据,应将其放置在ViewData集合中,只要提供刷新请求的操作与最初请求的操作相同(即在重定向之前未添加ViewData值)。